{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Batch Normalization – Lesson\n",
    "\n",
    "1. [What is it?](#theory)\n",
    "2. [What are it's benefits?](#benefits)\n",
    "3. [How do we add it to a network?](#implementation_1)\n",
    "4. [Let's see it work!](#demos)\n",
    "5. [What are you hiding?](#implementation_2)\n",
    "\n",
    "# What is Batch Normalization?<a id='theory'></a>\n",
    "\n",
    "Batch normalization was introduced in Sergey Ioffe's and Christian Szegedy's 2015 paper [Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift](https://arxiv.org/pdf/1502.03167.pdf). The idea is that, instead of just normalizing the inputs to the network, we normalize the inputs to _layers within_ the network. It's called \"batch\" normalization because during training, we normalize each layer's inputs by using the mean and variance of the values in the current mini-batch.\n",
    "\n",
    "Why might this help? Well, we know that normalizing the inputs to a _network_ helps the network learn. But a network is a series of layers, where the output of one layer becomes the input to another. That means we can think of any layer in a neural network as the _first_ layer of a smaller network.\n",
    "\n",
    "For example, imagine a 3 layer network. Instead of just thinking of it as a single network with inputs, layers, and outputs, think of the output of layer 1 as the input to a two layer network. This two layer network would consist of layers 2 and 3 in our original network. \n",
    "\n",
    "Likewise, the output of layer 2 can be thought of as the input to a single layer network, consistng only of layer 3.\n",
    "\n",
    "When you think of it like that - as a series of neural networks feeding into each other - then it's easy to imagine how normalizing the inputs to each layer would help. It's just like normalizing the inputs to any other neural network, but you're doing it at every layer (sub-network).\n",
    "\n",
    "Beyond the intuitive reasons, there are good mathematical reasons why it helps the network learn better, too. It helps combat what the authors call _internal covariate shift_. This discussion is best handled [in the paper](https://arxiv.org/pdf/1502.03167.pdf) and in [Deep Learning](http://www.deeplearningbook.org) a book you can read online written by Ian Goodfellow, Yoshua Bengio, and Aaron Courville. Specifically, check out the batch normalization section of [Chapter 8: Optimization for Training Deep Models](http://www.deeplearningbook.org/contents/optimization.html)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Benefits of Batch Normalization<a id=\"benefits\"></a>\n",
    "\n",
    "Batch normalization optimizes network training. It has been shown to have several benefits:\n",
    "1. **Networks train faster** – Each training _iteration_ will actually be slower because of the extra calculations during the forward pass and the additional hyperparameters to train during back propagation. However, it should converge much more quickly, so training should be faster overall. \n",
    "2. **Allows higher learning rates** – Gradient descent usually requires small learning rates for the network to converge. And as networks get deeper, their gradients get smaller during back propagation so they require even more iterations. Using batch normalization allows us to use much higher learning rates, which further increases the speed at which networks train. \n",
    "3. **Makes weights easier to initialize** – Weight initialization can be difficult, and it's even more difficult when creating deeper networks. Batch normalization seems to allow us to be much less careful about choosing our initial starting weights.  \n",
    "4. **Makes more activation functions viable** – Some activation functions do not work well in some situations. Sigmoids lose their gradient pretty quickly, which means they can't be used in deep networks. And ReLUs often die out during training, where they stop learning completely, so we need to be careful about the range of values fed into them. Because batch normalization regulates the values going into each activation function, non-linearlities that don't seem to work well in deep networks actually become viable again.  \n",
    "5. **Simplifies the creation of deeper networks** – Because of the first 4 items listed above, it is easier to build and faster to train deeper neural networks when using batch normalization. And it's been shown that deeper networks generally produce better results, so that's great.\n",
    "6. **Provides a bit of regularlization** – Batch normalization adds a little noise to your network. In some cases, such as in Inception modules, batch normalization has been shown to work as well as dropout. But in general, consider batch normalization as a bit of extra regularization, possibly allowing you to reduce some of the dropout you might add to a network. \n",
    "7. **May give better results overall** – Some tests seem to show batch normalization actually improves the train.ing results. However, it's really an optimization to help train faster, so you shouldn't think of it as a way to make your network better. But since it lets you train networks faster, that means you can iterate over more designs more quickly. It also lets you build deeper networks, which are usually better. So when you factor in everything, you're probably going to end up with better results if you build your networks with batch normalization."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Batch Normalization in TensorFlow<a id=\"implementation_1\"></a>\n",
    "\n",
    "This section of the notebook shows you one way to add batch normalization to a neural network built in TensorFlow. \n",
    "\n",
    "The following cell imports the packages we need in the notebook and loads the MNIST dataset to use in our experiments. However, the `tensorflow` package contains all the code you'll actually need for batch normalization."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.\n",
      "Extracting MNIST_data/train-images-idx3-ubyte.gz\n",
      "Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.\n",
      "Extracting MNIST_data/train-labels-idx1-ubyte.gz\n",
      "Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.\n",
      "Extracting MNIST_data/t10k-images-idx3-ubyte.gz\n",
      "Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.\n",
      "Extracting MNIST_data/t10k-labels-idx1-ubyte.gz\n"
     ]
    }
   ],
   "source": [
    "# Import necessary packages\n",
    "import tensorflow as tf\n",
    "import tqdm\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "# Import MNIST data so we have something for our experiments\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "mnist = input_data.read_data_sets(\"MNIST_data/\", one_hot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Neural network classes for testing\n",
    "\n",
    "The following class, `NeuralNet`, allows us to create identical neural networks with and without batch normalization. The code is heaviy documented, but there is also some additional discussion later. You do not need to read through it all before going through the rest of the notebook, but the comments within the code blocks may answer some of your questions.\n",
    "\n",
    "*About the code:*\n",
    ">This class is not meant to represent TensorFlow best practices – the design choices made here are to support the discussion related to batch normalization.\n",
    "\n",
    ">It's also important to note that we use the well-known MNIST data for these examples, but the networks we create are not meant to be good for performing handwritten character recognition. We chose this network architecture because it is similar to the one used in the original paper, which is complex enough to demonstrate some of the benefits of batch normalization while still being fast to train."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class NeuralNet:\n",
    "    def __init__(self, initial_weights, activation_fn, use_batch_norm):\n",
    "        \"\"\"\n",
    "        Initializes this object, creating a TensorFlow graph using the given parameters.\n",
    "        \n",
    "        :param initial_weights: list of NumPy arrays or Tensors\n",
    "            Initial values for the weights for every layer in the network. We pass these in\n",
    "            so we can create multiple networks with the same starting weights to eliminate\n",
    "            training differences caused by random initialization differences.\n",
    "            The number of items in the list defines the number of layers in the network,\n",
    "            and the shapes of the items in the list define the number of nodes in each layer.\n",
    "            e.g. Passing in 3 matrices of shape (784, 256), (256, 100), and (100, 10) would \n",
    "            create a network with 784 inputs going into a hidden layer with 256 nodes,\n",
    "            followed by a hidden layer with 100 nodes, followed by an output layer with 10 nodes.\n",
    "        :param activation_fn: Callable\n",
    "            The function used for the output of each hidden layer. The network will use the same\n",
    "            activation function on every hidden layer and no activate function on the output layer.\n",
    "            e.g. Pass tf.nn.relu to use ReLU activations on your hidden layers.\n",
    "        :param use_batch_norm: bool\n",
    "            Pass True to create a network that uses batch normalization; False otherwise\n",
    "            Note: this network will not use batch normalization on layers that do not have an\n",
    "            activation function.\n",
    "        \"\"\"\n",
    "        # Keep track of whether or not this network uses batch normalization.\n",
    "        self.use_batch_norm = use_batch_norm\n",
    "        self.name = \"With Batch Norm\" if use_batch_norm else \"Without Batch Norm\"\n",
    "\n",
    "        # Batch normalization needs to do different calculations during training and inference,\n",
    "        # so we use this placeholder to tell the graph which behavior to use.\n",
    "        self.is_training = tf.placeholder(tf.bool, name=\"is_training\")\n",
    "\n",
    "        # This list is just for keeping track of data we want to plot later.\n",
    "        # It doesn't actually have anything to do with neural nets or batch normalization.\n",
    "        self.training_accuracies = []\n",
    "\n",
    "        # Create the network graph, but it will not actually have any real values until after you\n",
    "        # call train or test\n",
    "        self.build_network(initial_weights, activation_fn)\n",
    "    \n",
    "    def build_network(self, initial_weights, activation_fn):\n",
    "        \"\"\"\n",
    "        Build the graph. The graph still needs to be trained via the `train` method.\n",
    "        \n",
    "        :param initial_weights: list of NumPy arrays or Tensors\n",
    "            See __init__ for description. \n",
    "        :param activation_fn: Callable\n",
    "            See __init__ for description. \n",
    "        \"\"\"\n",
    "        self.input_layer = tf.placeholder(tf.float32, [None, initial_weights[0].shape[0]])\n",
    "        layer_in = self.input_layer\n",
    "        for weights in initial_weights[:-1]:\n",
    "            layer_in = self.fully_connected(layer_in, weights, activation_fn)    \n",
    "        self.output_layer = self.fully_connected(layer_in, initial_weights[-1])\n",
    "   \n",
    "    def fully_connected(self, layer_in, initial_weights, activation_fn=None):\n",
    "        \"\"\"\n",
    "        Creates a standard, fully connected layer. Its number of inputs and outputs will be\n",
    "        defined by the shape of `initial_weights`, and its starting weight values will be\n",
    "        taken directly from that same parameter. If `self.use_batch_norm` is True, this\n",
    "        layer will include batch normalization, otherwise it will not. \n",
    "        \n",
    "        :param layer_in: Tensor\n",
    "            The Tensor that feeds into this layer. It's either the input to the network or the output\n",
    "            of a previous layer.\n",
    "        :param initial_weights: NumPy array or Tensor\n",
    "            Initial values for this layer's weights. The shape defines the number of nodes in the layer.\n",
    "            e.g. Passing in 3 matrix of shape (784, 256) would create a layer with 784 inputs and 256 \n",
    "            outputs. \n",
    "        :param activation_fn: Callable or None (default None)\n",
    "            The non-linearity used for the output of the layer. If None, this layer will not include \n",
    "            batch normalization, regardless of the value of `self.use_batch_norm`. \n",
    "            e.g. Pass tf.nn.relu to use ReLU activations on your hidden layers.\n",
    "        \"\"\"\n",
    "        # Since this class supports both options, only use batch normalization when\n",
    "        # requested. However, do not use it on the final layer, which we identify\n",
    "        # by its lack of an activation function.\n",
    "        if self.use_batch_norm and activation_fn:\n",
    "            # Batch normalization uses weights as usual, but does NOT add a bias term. This is because \n",
    "            # its calculations include gamma and beta variables that make the bias term unnecessary.\n",
    "            # (See later in the notebook for more details.)\n",
    "            weights = tf.Variable(initial_weights)\n",
    "            linear_output = tf.matmul(layer_in, weights)\n",
    "\n",
    "            # Apply batch normalization to the linear combination of the inputs and weights\n",
    "            batch_normalized_output = tf.layers.batch_normalization(linear_output, training=self.is_training)\n",
    "\n",
    "            # Now apply the activation function, *after* the normalization.\n",
    "            return activation_fn(batch_normalized_output)\n",
    "        else:\n",
    "            # When not using batch normalization, create a standard layer that multiplies\n",
    "            # the inputs and weights, adds a bias, and optionally passes the result \n",
    "            # through an activation function.  \n",
    "            weights = tf.Variable(initial_weights)\n",
    "            biases = tf.Variable(tf.zeros([initial_weights.shape[-1]]))\n",
    "            linear_output = tf.add(tf.matmul(layer_in, weights), biases)\n",
    "            return linear_output if not activation_fn else activation_fn(linear_output)\n",
    "\n",
    "    def train(self, session, learning_rate, training_batches, batches_per_sample, save_model_as=None):\n",
    "        \"\"\"\n",
    "        Trains the model on the MNIST training dataset.\n",
    "        \n",
    "        :param session: Session\n",
    "            Used to run training graph operations.\n",
    "        :param learning_rate: float\n",
    "            Learning rate used during gradient descent.\n",
    "        :param training_batches: int\n",
    "            Number of batches to train.\n",
    "        :param batches_per_sample: int\n",
    "            How many batches to train before sampling the validation accuracy.\n",
    "        :param save_model_as: string or None (default None)\n",
    "            Name to use if you want to save the trained model.\n",
    "        \"\"\"\n",
    "        # This placeholder will store the target labels for each mini batch\n",
    "        labels = tf.placeholder(tf.float32, [None, 10])\n",
    "\n",
    "        # Define loss and optimizer\n",
    "        cross_entropy = tf.reduce_mean(\n",
    "            tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=self.output_layer))\n",
    "        \n",
    "        # Define operations for testing\n",
    "        correct_prediction = tf.equal(tf.argmax(self.output_layer, 1), tf.argmax(labels, 1))\n",
    "        accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\n",
    "\n",
    "        if self.use_batch_norm:\n",
    "            # If we don't include the update ops as dependencies on the train step, the \n",
    "            # tf.layers.batch_normalization layers won't update their population statistics,\n",
    "            # which will cause the model to fail at inference time\n",
    "            with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):\n",
    "                train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)\n",
    "        else:\n",
    "            train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)\n",
    "        \n",
    "        # Train for the appropriate number of batches. (tqdm is only for a nice timing display)\n",
    "        for i in tqdm.tqdm(range(training_batches)):\n",
    "            # We use batches of 60 just because the original paper did. You can use any size batch you like.\n",
    "            batch_xs, batch_ys = mnist.train.next_batch(60)\n",
    "            session.run(train_step, feed_dict={self.input_layer: batch_xs, \n",
    "                                               labels: batch_ys, \n",
    "                                               self.is_training: True})\n",
    "        \n",
    "            # Periodically test accuracy against the 5k validation images and store it for plotting later.\n",
    "            if i % batches_per_sample == 0:\n",
    "                test_accuracy = session.run(accuracy, feed_dict={self.input_layer: mnist.validation.images,\n",
    "                                                                 labels: mnist.validation.labels,\n",
    "                                                                 self.is_training: False})\n",
    "                self.training_accuracies.append(test_accuracy)\n",
    "\n",
    "        # After training, report accuracy against test data\n",
    "        test_accuracy = session.run(accuracy, feed_dict={self.input_layer: mnist.validation.images,\n",
    "                                                         labels: mnist.validation.labels,\n",
    "                                                         self.is_training: False})\n",
    "        print('{}: After training, final accuracy on validation set = {}'.format(self.name, test_accuracy))\n",
    "\n",
    "        # If you want to use this model later for inference instead of having to retrain it,\n",
    "        # just construct it with the same parameters and then pass this file to the 'test' function\n",
    "        if save_model_as:\n",
    "            tf.train.Saver().save(session, save_model_as)\n",
    "\n",
    "    def test(self, session, test_training_accuracy=False, include_individual_predictions=False, restore_from=None):\n",
    "        \"\"\"\n",
    "        Trains a trained model on the MNIST testing dataset.\n",
    "\n",
    "        :param session: Session\n",
    "            Used to run the testing graph operations.\n",
    "        :param test_training_accuracy: bool (default False)\n",
    "            If True, perform inference with batch normalization using batch mean and variance;\n",
    "            if False, perform inference with batch normalization using estimated population mean and variance.\n",
    "            Note: in real life, *always* perform inference using the population mean and variance.\n",
    "                  This parameter exists just to support demonstrating what happens if you don't.\n",
    "        :param include_individual_predictions: bool (default True)\n",
    "            This function always performs an accuracy test against the entire test set. But if this parameter\n",
    "            is True, it performs an extra test, doing 200 predictions one at a time, and displays the results\n",
    "            and accuracy.\n",
    "        :param restore_from: string or None (default None)\n",
    "            Name of a saved model if you want to test with previously saved weights.\n",
    "        \"\"\"\n",
    "        # This placeholder will store the true labels for each mini batch\n",
    "        labels = tf.placeholder(tf.float32, [None, 10])\n",
    "\n",
    "        # Define operations for testing\n",
    "        correct_prediction = tf.equal(tf.argmax(self.output_layer, 1), tf.argmax(labels, 1))\n",
    "        accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\n",
    "\n",
    "        # If provided, restore from a previously saved model\n",
    "        if restore_from:\n",
    "            tf.train.Saver().restore(session, restore_from)\n",
    "\n",
    "        # Test against all of the MNIST test data\n",
    "        test_accuracy = session.run(accuracy, feed_dict={self.input_layer: mnist.test.images,\n",
    "                                                         labels: mnist.test.labels,\n",
    "                                                         self.is_training: test_training_accuracy})\n",
    "        print('-'*75)\n",
    "        print('{}: Accuracy on full test set = {}'.format(self.name, test_accuracy))\n",
    "\n",
    "        # If requested, perform tests predicting individual values rather than batches\n",
    "        if include_individual_predictions:\n",
    "            predictions = []\n",
    "            correct = 0\n",
    "\n",
    "            # Do 200 predictions, 1 at a time\n",
    "            for i in range(200):\n",
    "                # This is a normal prediction using an individual test case. However, notice\n",
    "                # we pass `test_training_accuracy` to `feed_dict` as the value for `self.is_training`.\n",
    "                # Remember that will tell it whether it should use the batch mean & variance or\n",
    "                # the population estimates that were calucated while training the model.\n",
    "                pred, corr = session.run([tf.arg_max(self.output_layer,1), accuracy],\n",
    "                                         feed_dict={self.input_layer: [mnist.test.images[i]],\n",
    "                                                    labels: [mnist.test.labels[i]],\n",
    "                                                    self.is_training: test_training_accuracy})\n",
    "                correct += corr\n",
    "\n",
    "                predictions.append(pred[0])\n",
    "\n",
    "            print(\"200 Predictions:\", predictions)\n",
    "            print(\"Accuracy on 200 samples:\", correct/200)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are quite a few comments in the code, so those should answer most of your questions. However, let's take a look at the most important lines.\n",
    "\n",
    "We add batch normalization to layers inside the `fully_connected` function. Here are some important points about that code:\n",
    "1. Layers with batch normalization do not include a bias term.\n",
    "2. We use TensorFlow's [`tf.layers.batch_normalization`](https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization) function to handle the math. (We show lower-level ways to do this [later in the notebook](#implementation_2).)\n",
    "3. We tell `tf.layers.batch_normalization` whether or not the network is training. This is an important step we'll talk about later.\n",
    "4. We add the normalization **before** calling the activation function.\n",
    "\n",
    "In addition to that code, the training step is wrapped in the following `with` statement:\n",
    "```python\n",
    "with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):\n",
    "```\n",
    "This line actually works in conjunction with the `training` parameter we pass to `tf.layers.batch_normalization`. Without it, TensorFlow's batch normalization layer will not operate correctly during inference.\n",
    "\n",
    "Finally, whenever we train the network or perform inference, we use the `feed_dict` to set `self.is_training` to `True` or `False`, respectively, like in the following line:\n",
    "```python\n",
    "session.run(train_step, feed_dict={self.input_layer: batch_xs, \n",
    "                                               labels: batch_ys, \n",
    "                                               self.is_training: True})\n",
    "```\n",
    "We'll go into more details later, but next we want to show some experiments that use this code and test networks with and without batch normalization."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Batch Normalization Demos<a id='demos'></a>\n",
    "This section of the notebook trains various networks with and without batch normalization to demonstrate some of the benefits mentioned earlier. \n",
    "\n",
    "We'd like to thank the author of this blog post [Implementing Batch Normalization in TensorFlow](http://r2rt.com/implementing-batch-normalization-in-tensorflow.html). That post provided the idea of - and some of the code for - plotting the differences in accuracy during training, along with the idea for comparing multiple networks using the same initial weights."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Code to support testing\n",
    "\n",
    "The following two functions support the demos we run in the notebook. \n",
    "\n",
    "The first function, `plot_training_accuracies`, simply plots the values found in the `training_accuracies` lists of the `NeuralNet` objects passed to it. If you look at the `train` function in `NeuralNet`, you'll see it that while it's training the network, it periodically measures validation accuracy and stores the results in that list. It does that just to support these plots.\n",
    "\n",
    "The second function, `train_and_test`, creates two neural nets - one with and one without batch normalization. It then trains them both and tests them, calling `plot_training_accuracies` to plot how their accuracies changed over the course of training. The really imporant thing about this function is that it initializes the starting weights for the networks _outside_ of the networks and then passes them in. This lets it train both networks from the exact same starting weights, which eliminates performance differences that might result from (un)lucky initial weights."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def plot_training_accuracies(*args, **kwargs):\n",
    "    \"\"\"\n",
    "    Displays a plot of the accuracies calculated during training to demonstrate\n",
    "    how many iterations it took for the model(s) to converge.\n",
    "    \n",
    "    :param args: One or more NeuralNet objects\n",
    "        You can supply any number of NeuralNet objects as unnamed arguments \n",
    "        and this will display their training accuracies. Be sure to call `train` \n",
    "        the NeuralNets before calling this function.\n",
    "    :param kwargs: \n",
    "        You can supply any named parameters here, but `batches_per_sample` is the only\n",
    "        one we look for. It should match the `batches_per_sample` value you passed\n",
    "        to the `train` function.\n",
    "    \"\"\"\n",
    "    fig, ax = plt.subplots()\n",
    "\n",
    "    batches_per_sample = kwargs['batches_per_sample']\n",
    "    \n",
    "    for nn in args:\n",
    "        ax.plot(range(0,len(nn.training_accuracies)*batches_per_sample,batches_per_sample),\n",
    "                nn.training_accuracies, label=nn.name)\n",
    "    ax.set_xlabel('Training steps')\n",
    "    ax.set_ylabel('Accuracy')\n",
    "    ax.set_title('Validation Accuracy During Training')\n",
    "    ax.legend(loc=4)\n",
    "    ax.set_ylim([0,1])\n",
    "    plt.yticks(np.arange(0, 1.1, 0.1))\n",
    "    plt.grid(True)\n",
    "    plt.show()\n",
    "\n",
    "def train_and_test(use_bad_weights, learning_rate, activation_fn, training_batches=50000, batches_per_sample=500):\n",
    "    \"\"\"\n",
    "    Creates two networks, one with and one without batch normalization, then trains them\n",
    "    with identical starting weights, layers, batches, etc. Finally tests and plots their accuracies.\n",
    "    \n",
    "    :param use_bad_weights: bool\n",
    "        If True, initialize the weights of both networks to wildly inappropriate weights;\n",
    "        if False, use reasonable starting weights.\n",
    "    :param learning_rate: float\n",
    "        Learning rate used during gradient descent.\n",
    "    :param activation_fn: Callable\n",
    "        The function used for the output of each hidden layer. The network will use the same\n",
    "        activation function on every hidden layer and no activate function on the output layer.\n",
    "        e.g. Pass tf.nn.relu to use ReLU activations on your hidden layers.\n",
    "    :param training_batches: (default 50000)\n",
    "        Number of batches to train.\n",
    "    :param batches_per_sample: (default 500)\n",
    "        How many batches to train before sampling the validation accuracy.\n",
    "    \"\"\"\n",
    "    # Use identical starting weights for each network to eliminate differences in\n",
    "    # weight initialization as a cause for differences seen in training performance\n",
    "    #\n",
    "    # Note: The networks will use these weights to define the number of and shapes of\n",
    "    #       its layers. The original batch normalization paper used 3 hidden layers\n",
    "    #       with 100 nodes in each, followed by a 10 node output layer. These values\n",
    "    #       build such a network, but feel free to experiment with different choices.\n",
    "    #       However, the input size should always be 784 and the final output should be 10.\n",
    "    if use_bad_weights:\n",
    "        # These weights should be horrible because they have such a large standard deviation\n",
    "        weights = [np.random.normal(size=(784,100), scale=5.0).astype(np.float32),\n",
    "                   np.random.normal(size=(100,100), scale=5.0).astype(np.float32),\n",
    "                   np.random.normal(size=(100,100), scale=5.0).astype(np.float32),\n",
    "                   np.random.normal(size=(100,10), scale=5.0).astype(np.float32)\n",
    "                  ]\n",
    "    else:\n",
    "        # These weights should be good because they have such a small standard deviation\n",
    "        weights = [np.random.normal(size=(784,100), scale=0.05).astype(np.float32),\n",
    "                   np.random.normal(size=(100,100), scale=0.05).astype(np.float32),\n",
    "                   np.random.normal(size=(100,100), scale=0.05).astype(np.float32),\n",
    "                   np.random.normal(size=(100,10), scale=0.05).astype(np.float32)\n",
    "                  ]\n",
    "\n",
    "    # Just to make sure the TensorFlow's default graph is empty before we start another\n",
    "    # test, because we don't bother using different graphs or scoping and naming \n",
    "    # elements carefully in this sample code.\n",
    "    tf.reset_default_graph()\n",
    "\n",
    "    # build two versions of same network, 1 without and 1 with batch normalization\n",
    "    nn = NeuralNet(weights, activation_fn, False)\n",
    "    bn = NeuralNet(weights, activation_fn, True)\n",
    "    \n",
    "    # train and test the two models\n",
    "    with tf.Session() as sess:\n",
    "        tf.global_variables_initializer().run()\n",
    "\n",
    "        nn.train(sess, learning_rate, training_batches, batches_per_sample)\n",
    "        bn.train(sess, learning_rate, training_batches, batches_per_sample)\n",
    "    \n",
    "        nn.test(sess)\n",
    "        bn.test(sess)\n",
    "    \n",
    "    # Display a graph of how validation accuracies changed during training\n",
    "    # so we can compare how the models trained and when they converged\n",
    "    plot_training_accuracies(nn, bn, batches_per_sample=batches_per_sample)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Comparisons between identical networks, with and without batch normalization\n",
    "\n",
    "The next series of cells train networks with various settings to show the differences with and without batch normalization. They are meant to clearly demonstrate the effects of batch normalization. We include a deeper discussion of batch normalization later in the notebook."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a ReLU activation function, a learning rate of 0.01, and reasonable starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:42<00:00, 1183.34it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.972999632358551\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:33<00:00, 533.50it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9831997156143188\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.9748001098632812\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9803001880645752\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nFVxxxRVMnTqVe+65h/r6eubPn8+ECRMy+8NmKEBXCi4pxAlbQ7MxWRo1ahQ5OTls2rSJRYsWceaZ\nZzJjxgwWL17M0qVLmTp1KpFIpHX9SCTC97//fa688kqWLVvGlVdeCcCbb77J008/zcsvv8ytt95K\nLBbjlVde4de//jUvvfQSL774Iv/93//Na6+91mVZLr/8ciorK/nlL3/JsmXLOk0I3/jGN5g2bRpj\nxozhqquuYvjw4QDccMMNLFmyhDfeeIPGxkaefPLJ1u3NmzePZcuWEQ6HufLKK7nnnntYvnw5//jH\nP1o/Y9myZTzyyCOsWLGCRx55hM2bNx/02QBnnnkmkUiE5557rt38++67DxFhxYoVPPTQQ1x77bWt\nievVV1/l0Ucf5fnnnwdg+fLlzJ07l9WrV/O73/2OtWvX8vLLL3PNNddw7733Zvqny1hwTpmTCcAl\nhdKC4IRtBraOZ/RHo8/+WWedxaJFi1i0aBFf+9rX2Lp1K4sWLaKsrIyzzz47o2184AMfIC8vj7y8\nPIYPH87OnTtZuHAhl112WevZ/Ec+8hFeeOEFPvShD2Vd1h/96EdcfvnlRKNRzj///Nbqreeee447\n77yThoYGamtrmTJlCh/84AfbvXfNmjWMHDmS008/HYDS0tLWZeeffz5lZWUATJ48mXfeeYexY8fS\nme985zvcdttt3HHHHa3zFi5cyI033gjApEmTGDduHGvXuuHfLrjgAoYMGdK67umnn87IkSMBmDBh\nAu973/sAmDJlCosXL85633QlOFcKCdemkMC6pBpzOFLtCitWrOCkk07ijDPOYPHixa0H3Ezk5eW1\nvg6Hw93Wn+fk5JBMJluns+mDX1xcTFVVFQsXLqSpqYkvfvGLPProo6xYsYLPfe5zh7zNQyn/eeed\nR2NjIy+++GJG204lxc4+KxQKtU6HQiFf2h2CkxRaq49yKIocXp2rMUF21lln8eSTTzJkyBDC4TBD\nhgxh3759LF68uNOkUFJSQl1dXY/bPeecc/jzn/9MQ0MD9fX1PP7445xzzjlUVFSwa9cuampqaG5u\n5sknn2y37Wg02uO24/E4L730EhMmTGhNAEOHDiUajbY2iHcs6wknnMD27dtZsmQJ4K7Csj0If+c7\n32nX7nDOOecwb948ANauXcumTZs44YQTstr2kRa4pJCTm2s3/hhzGKZOncqePXs444wz2s0rKytj\n6NChB60/c+ZMVq1axbRp03jkkUe63O6pp57KrFmzmD59OjNmzOC6667j3e9+N7m5uXz3u99l+vTp\nXHDBBUyaNKn1PbNmzeKmm25i2rRpNDY2HrTNVJvCySefzNSpU/nIRz7CoEGD+NznPsdJJ53E+9//\n/tbqodT2rr/+eqZNm0YikeCRRx7hxhtv5JRTTuGCCy7I+k7hiy++mGHDhrVOf/GLXySZTDJ16lSu\nvPJKHnzwwXZXBL1KVX37AS4E1gDrgDmdLJ8ELAaaga9nss3TTjtNs7Jnner3SvWW2/49u/f3Y889\n91xvF+GoG8gxr1q1qstlBw4cOIol6RuCGLNq93F39h0BlmoGx1jfWlxFJAzcB1yAez7zEhGZr6qr\n0larBb4MfNivcrTyrhRyc/tINjbGmD7Iz+qj6cA6VV2vqi3Aw8Cl6Suo6i5VXQLEfCyH4yWFvLTu\ncsYYY9rzs2/maCC98+4WYEY2GxKR2cBsgIqKCqqrqw95G8V166kEmpuasnp/fxaNRi3mAaSsrKzL\nhttEIpFRo+5AEsSYofu4mw7jONcvOuyr6v3A/QCVlZWa1fghW0rgFRg2dGi/GH/kSKqurraYB5DV\nq1d3eS9CEJ8tEMSYofu48/Pzefe7353Vdv2sPtoKpN/NMcab1zu86qNInlUfGWNMV/xMCkuAiSIy\nXkQiwFXAfB8/r1vqDYiX31e6fRljTB/kW1JQ1ThwA/A0sBr4g6quFJHrReR6ABEZISJbgK8B3xGR\nLSJS2vVWs9fc3AxAvl0pGJO1ozl09rHHHsvUqVOZNm0aU6dO5S9/+UuP7/nhD3/Y4zqzZs1qd8Na\nV0SEm2++uXX6rrvu4pZbbunxff2drzevqeoCVT1eVSeo6g+8eXNVda73eoeqjlHVUlUd5L0+0P1W\ns9PQ1AJAfl6+H5s3JhCO9tDZzz33HMuWLePRRx9tHUm1O5kkhUzl5eXx2GOPsWfPnqze31tDXx+u\nftHQfCQ0elcKBflWfWQGkKfmwI4VrZMFiTiED/PfesRUuOj2Thf5PXR2Vw4cOMDgwYNbpz/84Q+z\nefNmmpqa+PznP8+Xv/xl5syZQ2NjI9OmTWPKlCnMmzeP3/72t9x1112ICCeffDK/+93vAPjnP//J\n3XffzY4dO7jzzjtbr2rS5eTkMHv2bH784x/zgx/8oN2yjRs38pnPfIY9e/YwbNgwfv3rX3PMMccw\na9Ys8vPzee211zj77LMpLS1lw4YNrF+/nk2bNvHjH/+YF198kaeeeorRo0fzxBNPkJvbt8ZiC8ww\nF43e7emFVn1kTNb8HDq7MzNnzuSkk07i3HPP5bbbbmud/8ADD/DKK6+wdOlS5s6dS01NDbfffjsF\nBQUsW7aMefPmsXLlSm677TaeffZZli9fzj333NP6/u3bt7Nw4UKefPJJ5syZ02W8X/rSl5g3bx77\n9+9vN//GG2/k2muv5fXXX+fqq69ul9S2bNnCokWLuPvuuwF4++23efbZZ5k/fz6f/OQnmTlzJitW\nrKCgoIC//vWvh7D3j47AXCk0t14pWPWRGUA6nNE39uOhs8eMGXPQes899xxDhw7l7bff5vzzz6eq\nqori4mJ++tOf8vjjjwOwdetW3nrrLcrLy9u999lnn+VjH/tY63hM6cNRf/jDHyYUCjF58mR27tzZ\nZTlLS0u55ppr+OlPf9rueQ2LFy/mscceA+BTn/oU3/zmN1uXfexjH2v3oKOLLrqI3Nxcpk6dSiKR\n4MILLwTceFEbN27MaH8dTYG5UqjNGc5jifdQUFre88rGmC4d7aGzwT1HoKKiglWrVlFdXc0//vEP\nFi9ezPLlyzn55JMPa+hrNyxQ12666SZ+9atfUV9fn9G2uxr6OhQKkZs2IKdfQ18frsAkhZPPeC/7\nK7/GqGOO7KPrjAkav4bO7s6uXbvYsGED48aNY//+/QwePJjCwkLefPPN1qGtAXJzc1uros477zz+\n+Mc/UlNTA0BtbW1Wnz1kyBCuuOIKfvWrX7XOO+uss3j44YcBmDdvHuecc062ofU5gUkKZQW5jC8L\nk59rz1Iw5nD4NXR2Z2bOnMm0adOYOXMmt99+OxUVFVx44YXE43FOPPFE5syZ027o69mzZ3PyySdz\n9dVXM2XKFL797W9z7rnncsopp/C1r30t65hvvvnmdr2Q7r33Xn7961+3Nl6nt1f0d9LTpVNfU1lZ\nqUuXLs3qvQN56IPuBDHugRzz6tWrOfHEEztdFsQhH4IYM3Qfd2ffERF5RVUre9puYK4UjDHG9MyS\ngjHGmFaWFIzph/pbta85eg73u2FJwZh+Jj8/n5qaGksM5iCqSk1NDfmHcT9WYG5eM2agGDNmDFu2\nbGH37t0HLWtqajqsA0J/FMSYoeu48/PzO70RMFOWFIzpZ3Jzcxk/fnyny6qrq7N+uEp/FcSYwb+4\n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\nEdHwHibeJ2br9asKAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa7ec47470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(False, 0.01, tf.nn.relu)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As expected, both networks train well and eventually reach similar test accuracies. However, notice that the model with batch normalization converges slightly faster than the other network, reaching accuracies over 90% almost immediately and nearing its max acuracy in 10 or 15 thousand iterations. The other network takes about 3 thousand iterations to reach 90% and doesn't near its best accuracy until 30 thousand or more iterations.\n",
    "\n",
    "If you look at the raw speed, you can see that without batch normalization we were computing over 1100 batches per second, whereas with batch normalization that goes down to just over 500. However, batch normalization allows us to perform fewer iterations and converge in less time over all. (We only trained for 50 thousand batches here so we could plot the comparison.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks with the same hyperparameters used in the previous example, but only trains for 2000 iterations.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 2000/2000 [00:01<00:00, 1069.17it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.8285998106002808\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 2000/2000 [00:04<00:00, 491.20it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9577997326850891\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.826200008392334\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9525001049041748\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n9evX11NU9cti801CQgLbt28nKSmJ8PDwOpXV/JJDPVQrvfDlZjbtz+OtX51OQnTd/gDG1FZaWhpx\ncXF07969Tu1cubm5xMXF1WNk9cdi801OTg4lJSWkpaXRo0ePOpXVrLrqiqu8zuMqLd95kNe+28qE\n07swum/7eozOGO8UFRXRpk0buwDCHEdEaNOmTZ3PKqGZJYfw0hznQbRv028WlpRzz4er6JgQxR8v\nPrkeIzOmdiwxmOrU12+jWVUrhZcedh74WK30zLwNbM/M571bRhDXwqqTjDFNV/M8c/ChWmnx1ize\n/N8ObjijG6N6BccUo8Y0tLvuuou//vWvR55fcMEF3Hzz0QsO7777bp5//nnS09MZP348ACtXrmTu\n3KMXLT7yyCM899xz9RLPW2+9RXp6epXrJk6cSI8ePRg8eDD9+vXj0UcfrVN5FaZNm8aUKVWOAnSM\n0aNHM2zY0SvzU1JSGD169AlfFyyaVXKIKDnkPKjliKyr0w5x67TldG8TzX0X9vNDZMY0DmeeeSaL\nFjnjZbpcLjIzM0lNTT2yftGiRYwaNYpOnToxc+ZM4PjkUJ9OtDN/9tlnWblyJStXruTtt99m+/bt\ndSqvtjIyMvj88899em1ZWVm9xeGLZlatVHHm4H210tLt2dz41jJaRofzzo0jiI5oVl+ZCXKPzk5l\nXXqOT68tLy8nNDT0uOX9O8XzcDWXaI8aNYq77roLgNTUVAYOHMjevXs5ePAg0dHRrF+/ntNOO40d\nO3ZwySWX8OOPP/LQQw9RWFjIwoULeeCBBwBYt24do0ePZteuXdx5553cfvvtADz//PO88cYbuFwu\nJk2axJ133nmkrLVr1wLw3HPPkZeXx8CBA0lJSeHaa68lKiqKxYsXExUVVWXcFQ20MTExADz22GPM\nnj2bwsJCRo0axauvvspHH310XHlr167ljjvuID8/n8jISL7++msA0tPTGTduHFu3buWKK67gmWee\nqfJ97733Xp544gkuvPDC4+K59dZbSUlJISwsjOeff57k5GTeeustPv74Y/Ly8igvL+fRRx/l4Ycf\npmXLlqxZs4arrrqKQYMG8eKLL1JYWMinn35Kr169qv8j10GzOnMILz1cq3GVvt10gOvf+IHE+Ehm\nTh5F1zbRfo7QmODWqVMnwsLC2LVrF4sWLeKMM85gxIgRLF68mJSUFAYNGkRExNHRAiIiInjssce4\n+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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa7a7e7f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(False, 0.01, tf.nn.relu, 2000, 50)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, using batch normalization produces a model with over 95% accuracy in only 2000 batches, and it was above 90% at somewhere around 500 batches. Without batch normalization, the model takes 1750 iterations just to hit 80% – the network with batch normalization hits that mark after around 200 iterations! (Note: if you run the code yourself, you'll see slightly different results each time because the starting weights - while the same for each model - are different for each run.)\n",
    "\n",
    "In the above example, you should also notice that the networks trained fewer batches per second then what you saw in the previous example. That's because much of the time we're tracking is actually spent periodically performing inference to collect data for the plots. In this example we perform that inference every 50 batches instead of every 500, so generating the plot for this example requires 10 times the overhead for the same 2000 iterations."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a sigmoid activation function, a learning rate of 0.01, and reasonable starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:43<00:00, 1153.97it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.8343997597694397\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:35<00:00, 526.30it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9755997061729431\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.8271000385284424\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9732001423835754\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nPXo0d999d1jl7dq167B55syZc9iy8vPzyctrirBfsmRJt5h5HUVKIehTsEqhPew9UEduelOPOeco\njBSCvgQwvoVtYZqPipxw1AGO+WhoTipgnM1fbC3FW+fj4hP68cMZI1i4pZSP1xc3XltWVd/MdATg\niRFG5qZx0Qn9rLnG4ZRTTmHBggUABAIBSkpKWL16dWP6ggULmDZtGn379uWVV14BDlYKHUlbSgHg\ngQceYPny5Sxfvpynn36arVu3Hra8wymF9lBcXMy777a6pNth8fl8HSZHe4ger2ujUrA+hfaw90Bt\ns15ynMfManZjrkKDP8DO/TVcELKL2eDsFP6xtIjqeh/J8W2/rjtClEJlhRkpAGwt8bJiRwUJsWby\nWaxHeHphIb+dt46vjcgh1hNDaVVds3DUIO/cchpdWR3c/dZq1uxqChH2+/14PEc2l2Js33R+ff64\nVtOmTZvGj370IwBWr17N+PHj2b17N+Xl5SQnJ7N27VomTZrEtm3bOO+881i2bBl33nknNTU1fPrp\np/ziF78AYM2aNeTn57N9+3ZuvfVWbrnlFgAeeughnnjiCQBmz57Nrbfe2ljWqlWrAHjwwQfxer2M\nHz+eJUuWMHv2bFJSUli4cCFJSUmtyh10vKakmHfinnvu4a233qKmpoZp06bx17/+lX/+858sWbKE\n73znOyQlJbFw4UJWrVrFD3/4Q6qqqkhISOCjjz4CYNeuXcycOZPNmzdz8cUX8/vf/77V+9522238\n5je/4eyzzz5InhtvvJElS5YQGxvLQw89xPTp03nqqad49dVX8Xq9+P1+7r77bn7961/To0cPVq5c\nyWWXXcaECRN45JFHqKqq4s0332TYsGHh/bBhEj0jhYCjFOx+CmHjDygl3rqDdhXrlZ7IvsrIRwoL\nNpW0OtLYWV6DP6AMbDFSgPAikHY4cxSCPoWBmcnEiNmb4cO1exsnn8V5Yrj97NFsKvZy11urCQSU\n8qoGeiYfrBQ8MUKMC6G33ZW+ffsSGxvL9u3bWbBgASeffDJTp05l4cKFLFmyhAkTJhAf3/Qc4+Pj\nueeee7j88stZvnw5l19+OQDr1q3jvffeY9GiRdx99900NDSwdOlSnnzySb744gs+//xz/va3v/Hl\nl18eUpZLL72UvLw8Hn/8cZYvX96qQrjtttuYOHEi/fv354orrqBXLxNWPGfOHBYvXsyqVauoqanh\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa7c1c19b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(False, 0.01, tf.nn.sigmoid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With the number of layers we're using and this small learning rate, using a sigmoid activation function takes a long time to start learning. It eventually starts making progress, but it took over 45 thousand batches just to get over 80% accuracy. Using batch normalization gets to 90% in around one thousand batches. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a ReLU activation function, a learning rate of 1, and reasonable starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:35<00:00, 1397.55it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.0957999974489212\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:39<00:00, 501.48it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.984399676322937\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.09799998998641968\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9834001660346985\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n50569uzJY489xnHHHceNN95ITk4O77//Pueeey5FRUWsXbuWNWvWsH79en7xi1/w1ltv8fLLL9Ov\nXz9efPFFwuFw8v+bDsCWuTAMI2n8XDq7OcaPH8/w4cM577zzuOeeexrSH330Ud59913mz5/PlClT\n2LVrF/feey+5ublUVFQwbdo0lixZwj333MPrr7/OggULeOihhxrO37JlC7Nnz+all15i8uTJLer7\njW98g2nTprF378FDXm+99VZuuOEGFi5cyOc///mDjNrGjRuZM2cODz74IACrV6/m9ddfZ/r06Xzh\nC19g/PjxLFq0iNzcXP7+978fwd3vGMxTMIxUpskbfXUKL53dv3//Q8rNmjWLHj16sHr1ai644ALK\nysooKCjgV7/6FS+88AIAmzZt4oMPPqB79+4Hnfv666/z2c9+tmE9psQhypdddhmBQIChQ4eybdu2\nFuUsKiri+uuv51e/+tVB+zXMnTuX559/HoDrrruO733vew15n/3sZw/a6GjixImEw2FGjBhBNBpl\nwoQJgFsvat26dUndr47EjIJhGEdE06WzBwwYwM9//nOKior44he/mFQdR7L0NLh9BEpKSli6dCkH\nDhzg1VdfZe7cueTl5TFu3LijWvraLQvUMrfffjujR49OWreWlr4OBAKEw2FEpOH4WIw7WPeRYRhH\nhF9LZx+O7du3s3btWo4//nj27t1L165dycvLY/ny5Q1LWwOEw+GGrqjzzz+fv/zlL+zatQtwExrb\nQrdu3bjqqqv4/e9/35A2duxYnn76aQCmTZvGuHHj2qraMYcZBcMwjgi/ls5ujvHjxzNq1CjGjx/P\nvffeS0lJCRMmTCASiXDqqacyefLkg5a+njRpEiNHjuTzn/88w4YN4wc/+AHnnXcep512Gt/+9rfb\nrPMdd9xx0Cikhx9+mMcee6wheJ0Yr0h1pDXX6VijtLRU58+f36Zz03W5h9bIRL3TWedly5Zx6qmn\nNpvXEdtxHmtkos5weL2be0ZE5F1VLW2tXvMUDMMwjAbMKBiGYRgNmFEwjBQk1bp9jY7jaJ8NMwqG\nkWLk5OSwa9cuMwzGIagqu3btIicnp8112DwFw0gx+vfvz8aNG9mxY8cheTU1NUfVIKQimagztKx3\nTk5OsxMBk8WMgmGkGOFwmEGDBjWbV15e3ubNVVKVTNQZ/NPb1+4jEZkgIitEZJWIHLLAiDh+5eUv\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa6b549e80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(False, 1, tf.nn.relu)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we're using ReLUs again, but with a larger learning rate. The plot shows how training started out pretty normally, with the network with batch normalization starting out faster than the other. But the higher learning rate bounces the accuracy around a bit more, and at some point the accuracy in the network without batch normalization just completely crashes. It's likely that too many ReLUs died off at this point because of the high learning rate.\n",
    "\n",
    "The next cell shows the same test again. The network with batch normalization performs the same way, and the other suffers from the same problem again, but it manages to train longer before it happens."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:36<00:00, 1379.92it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.09859999269247055\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:42<00:00, 488.08it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9839996695518494\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.10099999606609344\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9822001457214355\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa713129b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(False, 1, tf.nn.relu)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In both of the previous examples, the network with batch normalization manages to gets over 98% accuracy, and get near that result almost immediately. The higher learning rate allows the network to train extremely fast."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a sigmoid activation function, a learning rate of 1, and reasonable starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:36<00:00, 1382.38it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.9783996343612671\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:35<00:00, 526.13it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9837996959686279\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.9752001166343689\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.981200098991394\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8XHW5+PHPMzPJZGmS7im0BcpON0oJLRQqKYu2gCKI\nAiJQFXsRAVHUW69cBH/oZRNF5Fp7sSxaAUXQgkUUaFhsgRYIdKOllNJ9S9skk3WW5/fHOUkmk0ky\nTXvaJOd5v155NXPOmTPfZzI9z3yX8/2KqmKMMcYABA52AYwxxnQflhSMMcY0s6RgjDGmmSUFY4wx\nzSwpGGOMaWZJwRhjTDNLCr2YiBwhIioiIffx8yJydSbHduG1/ktEHtqX8hpviMgsEfnvg12OzohI\nqYgs39/Hmr0jdp9C9yUi/wDeUtVbU7ZfCPwWGKaqsQ6efwTwMZDV0XFdOLYU+IOqDus0iP3Efc0F\nwExVvetAve6BJCK3AT8C6t1NW4B/Aj9V1S0Hq1zpiMhk4Pmmh0AeUJN0yEhVXX/AC2b2mdUUurdH\nga+IiKRsvxKY29nFu5e5GtgFXHWgX7irtacuelJVC4D+wEXAEOBtETmkKycTkeD+LFwTVX1NVfuo\nah9glLu5b9O21IQgIgERsetND2B/pO7tr8AAYHLTBhHpB1wAPOY+Pl9E3hWRKhHZ4H7bTEtEykTk\nGvf3oIjcKyI7RWQtcH7KsV8VkZUiUi0ia0XkP9zt+TjfEA8VkYj7c6iI3CYif0h6/udEZLmI7HFf\n94SkfetE5Hsi8r6IVIrIkyKS00G584FLgG8Bx4hIScr+M0RkoftaG0Rkurs9V0R+LiKfuK/zurut\nVEQ2ppxjnYic4/5+m4g8JSJ/EJEqYLqITBCRRe5rbBGRX4tIdtLzR4nIv0Rkl4hsc5vThohIrYgM\nSDpuvIjsEJGs9uIFUNWoqi4HLgV2ADe7z58uIq+nlF1F5Gj390dE5DciMl9EaoAp7rY73P2lIrJR\nRG4Wke1uLF9NOtcAEXnW/TwtFpE7Ul8vU+77/f9EZBFOLeIwEbkm6XP1UdPn0T3+HBFZl/R4o4h8\nV0SWun+/x0UkvLfHuvt/KCJbRWSTiHzDfc+O6EpcvZ0lhW5MVeuAP9H62/GXgA9U9T33cY27vy/O\nhf2bIvL5DE7/DZzkchJQgnPRTbbd3V8IfBX4hYiMV9UaYBqwOelb4ebkJ4rIscDjwE3AIGA+8Gzy\nRdSNYyowAhgLTO+grBcDEeDPwAs4tYam1zocJ0k94L7WOKDc3X0vcDIwCeeb9w+AREdvSpILgadw\n3te5QBz4DjAQOA04G7jOLUMB8CLwD+BQ4GjgJVXdCpS5sTa5EnhCVaOZFEJV48DfSPpikIEvAz8F\nCoB0F/QhQBEwFPg68KA4XzYAHsT5TA3BeZ/T9kHthSuBr+F8jjYC23A+p4U4n8EHRGRsB8//EnAu\ncCTO3/LKvT1WRC4AbgCmAMcCZ3U9nN7PkkL39yhwSdI36avcbQCoapmqLlXVhKq+j3MxPjOD834J\n+KWqblDVXcD/JO9U1b+r6kfqeAWnbTvTC9OlwN9V9V/uxe9eIBfn4tzkV6q62X3tZ3Eu5u25GqdZ\nJQ78Ebgs6Zv2l4EXVfVx99t1haqWi9NU8TXg26q6SVXjqrpQVRsyjGGRqv7VfV/rVPVtVX1DVWOq\nug6nT6fpfb4A2KqqP1fVelWtVtU33X2PAl+B5qacy4HfZ1iGJptxklqm/qaq/3bLXp9mfxT4ift+\nzcdJuMe55fsC8GNVrVXVFSR91rpojqqudF8rpqrPqupa93P1MvASHX+ufqmqW1W1AniOjj8n7R37\nJeB3bjlqgNv3MaZezZJCN6eqrwM7gc+LyFHABJwLIwAiMlFEFrhNEpXAtTjfZjtzKLAh6fEnyTtF\nZJqIvOE2h+wBzsvwvE3nbj6fqibc1xqadMzWpN9rgT7pTiQiw3G+4c11N/0NyKGluWs48FGapw50\nj0u3LxPJ7w0icqyIPOc2QVQBP6Pl/WivDE3lHSkiI3C+xVaq6lt7WZahOP0pmdrQyf6KlP6opvd/\nEBBKeX5n59qrsojIBSLyZtLn6tN0/LnK6HPSybGpn/V9jalXs6TQMzyGU0P4CvCCqm5L2vdHYB4w\nXFWLgFk4o0E6swXnYtbksKZf3LbYv+B8wy9W1b44TUBN5+1syNpm4PCk84n7WpsyKFeqK3E+p8+K\nyFZgLc7FvqlZYwNwVJrn7cQZxZNuXw3OaJmm8gVxLojJUmP8DfABcIyqFgL/Rcv7sQGnyaIN95v6\nn3D+dleyl7UEt8bzWeC1dso+JN3L7s1rJNkBxIDkUWXD2zk2U81lEZFcnCa5/6Hlc/VPMvu87ost\n7N+YejVLCj3DY8A5OG2wqdX5AmCXqtaLyASc5pRM/Am4UUSGue3JM5P2ZQNh3IuEiEzD+UbXZBsw\nQESKOjj3+SJyttvMczPQACzMsGzJrsap7o9L+vkCcJ7bgTsXOEdEviQiIbejdJxbO5kD3CdOR3hQ\nRE5zE95qIEecTvos4BY33o4UAFVARESOB76ZtO854BARuUlEwiJSICITk/Y/htNn8jkyTApuLCfg\nNAcOAe5zd70HjBKRcW6T4m2ZnC8TbvPc08BtIpLnxrk/R3uFcT5bO4C429Z/9n48f3v+BHxdRI4T\nkTyg29+zcTBZUugB3DbshUA+Tq0g2XXAT0SkGrgV5z9AJv4Pp9P2PeAdnItB0+tVAze659qNk2jm\nJe3/AOditVac0TiHppR3Fc434wdwvrF/FvisqjZmWDYARORUnBrHg25bcdPPPGANcLk79PE8nMSz\nC6eT+UT3FN8DlgKL3X13AQFVrcR53x7Cqb3U4HSCduR77vtQjfPePZkUbzVO09BncZowPsRp8mra\n/2+cDu53VLVVM10al4pIBKjEec8rgJObOvNVdTXwE5yO7Q9J35G8L67H6YTeipPAHsdJ6PtMVffg\ndNY/g/P3uAQnoXpKVZ/Fqem9ivOe/dvdtV/i6m3s5jVjDgAReRn4o6r2qLu+ReQuYIiq7usopG5D\nRMbgfBEKuzVKk8RqCsZ4TEROAcaTVLvorkTkeBEZK44JOENWnznY5dpXInKRiGSLSH/gTpwRWpYQ\n0vAsKYjIHHFujlnWzn4RkV+JyBpxbmIa71VZjDlYRORRnKaem9xmpu6uAKcpsQYnif0cZwRVT/ct\nnKbMNTgDEL51cIvTfXnWfCQin8IZ//yYqo5Os/88nBtKzgMmAver6sTU44wxxhw4ntUUVPVVOh5b\nfSFOwlBVfQPoK12c38UYY8z+cSAn+ko1lNY3kWx0t7WZDVJEZgAzAHJzc08ePrxrw4wTiQSBgP+6\nUfwYtx9jBn/G7ceYYe/jXr169U5VTb0fp42DmRQypqqzgdkAJSUlumTJki6dp6ysjNLS0v1Ysp7B\nj3H7MWbwZ9x+jBn2Pm4R6Ww4NHBwRx9tovWdhcPo2h2vxnhH1fnpThqqIRFvvU0VaioIxNNNdWS6\nNVWI7dUtPJ46mDWFecD1IvIETkdzpXazhUTMXlB1LlZ1u92fXVBfBX0Pg8EnQFbuvp0/1giVG2DP\nJ5BIwNDxkOfOEZeIw/YVsG2F87p1uzl6zTKo/DM01kIiBv2PdMox8BgIZDnbVCE7D8IFzk/A/e8Q\nb4SPX4UV82D1C5DbD44/3/kZcDTE6p1jAILZEApDKAey853H9Xtg4xLY8CZEtkH/o2DgsdB/BOQU\nOa8Vj8KGt2D9QtjyPsQaQONOuRJx50cTzrmz851/I9tg93poqHRi6HeEc876Sti5Gup28ymApYfD\n4JGQPxBEnDijtVCz0/kJZjnv39CToeAQ931dD5Ht7mvHIBCEomHQ93AoGOLE21gL0Rrn71xf5fzb\nGHHOHa2HUDZk5TnlzRvoPC9/EOxa67wXG5eABKDf4c55JQA1O6B2p/P3DWVDMOz8XQce47xn4UKo\n2gxVG6Eh4sSUP8h5P/Y4n4exG1bDzqOc7eEC53zV26C2AsJ9nL9fThEg7vsbhZoKiGx1jovVOZ8p\njTuvV1AMfYY4cTTJynXOnz/QiTERc/4+yaNaw4Uw7BSn7CIQ2QHrXoMdq1o+Z4GQ837s/ND5t9b5\nvBJvcJ5fOBQKD3XKHC5wyl+724m/chOMvxJO//a+/V/qhGdJQUQeB0qBgeLMXf9jIAtAVWfhzKVz\nHs4QsVqc6Zn9o74Kdnzg/Ic64lOQadugKmxbTsPql6j5aCF9jjyV7FOubrlARuth/SKo202cALvq\nEsQ3rOHjt2qJBbJINNQgkW0Ea7aRHa0krPWEtYEgcRKBbBKBbEJ9BtBnxCnORSO3P2xdSs1HC9nz\n8Ttk1Wwlu2474cbdCAoiBDROKFpNQOPpiywBYkUjCAYDBOr3QN0e54JxyInsKDiBWF01gyMrCW57\nH+qr0FDYKQsBNBGDRIyseJ3zeklqC4+iMXcQfSqWEoq1LPqVQOhHLpXb8omHchERCj6YT2gv1ySK\nBAopzzudwugeTnjrIbLe/E2nz4kTIOjOzh0nQJUU0E8r2z0+Roj12UdSo2Hq4wEaEhAMZpGVlUN2\nKESWNhKK7yGUaCQS6sfu3ClU9x1CbryKAQ2bGLB+LbWBfLZmncHW3KHEanZxbGwHh65bSV4i0vw6\nUcmmOtifSKgv4Xgtw7c+Sd6SOS3vmQRpDPcnEcgiQRBJNJJbv4NAOzONJxAaJJeGQC6NgRyiEkYS\nUbITdYQTdRS0WoQNtgWHsCp0PHECFG/axuANq5z3ONiXmlA/EsFCsomSRR0F25bS/4PnCdLyeYoR\noiGQR26imoD7OUgQYE9oELsS+SQii+gT301OopaaYBG7A/3YTSE5uosCXU5+IgIiqARIEKIuq4i6\n8GCi+SdTLznUxYX6mJIdraZgdwWFO1aRrQ0IzsRM2VpHQbySEOk/48lqAoVUB/syJJp+4bkYIbZl\nHcr20FCqgodTnVdALbnkx3bTf88OBuz6hAJWkq+15GotNYFCKoID2SbFxLbnOInfQ54lBVW9vJP9\nit/GCqvCG7+BN/7X+Xbmqul7PCtHfpuNAz/FqPBWjtz2TwLrXqW6roHtkTi7aqMUBhvoG6inSCvJ\njUcIAxXan/6f/IPYq3cSHHMx1O0hsWYBwXgdAE2zvJ0NaefwrNcsaglTTQ5xDZAtMbKJ0ocaeNO5\nGCQkREBj5AMR7ctmHcA27UeFDifhtj4mCFBFHnu0D5Xkkwj3ZcLIo5g8egQfr17OJyvepH/FR+Tl\nZHPSsadS0Lc/umcDVWsXM6juORo1yEodzsacU6jM6UtNTQ2BRJQgCWIEiRMgQi4bEoPZoIMIiDJe\nPmT87tUM2rOd9xKTeDtxDMt0BDu1iGBuIeGAEpNsdlU1Ek8o/cJwSlElo8LbqWuMsrsuwZ66GH1D\nMQZlN9Av1EBQE8QSSkyVDwNHsSJrDARDxBMJgtRwYuO7DAxUE8jKIZgVdr6AN9YRa6wnK9FIUaiR\nwlCURCiPj3NGsinvBDQ7nyJqGBrfRP/oVqShCmmMEI3FWBU6jg+Cx9BAmH752QzMz6YgJ8TOSCOb\nK+vYXtVAIADZWQGyggHiCaUxmqCxLoEAwaAQDAnBgBAUIZAQahI15ATyiGdru7PiBUIQLhJGyBZy\no7t4t7KAddEi4nWtF2nLlhgj86sZkVNDI1nUaJhaDVMfzCcayIVAEFUlllASqhSEQxTlZVOUm0U8\nWk+odgdZdTuoCA6mNnsg2aEAgYC4/xWUaDxBXWOc2sY49bE4jbEEjbEE8YSSE0gwPLCDAuqoCA6k\nOtgXlQDxaJTcWCVZ2kBV1iCyw2Ea62ohlEN1LEZDLErf7BwG9Mmmb14WghBLOOdsjCVocF+jqj7K\nnqoosYTzLhWEQxTmZpEfDpKdFyA7GEBEnM9DPEEwIISDQr9gDTkapVEDNGqAhphSH01QG41RFNvN\nWF3FWFYxIFHJC3lTWJV7EptzjyWQaCQcr0HijWyXATRqkHhCnb9dQAgFhOyQ87qhYICahhh7aqNU\n1kUJhwL0yQlRkBPic8MObfP33N96REdzt5WIw7K/OFW+I07v+NhoHcy7EZb+ie0DJ7JowGf4187+\nZEWr+faupylZ+E0O1yIGSSUJFZYFjqYylk04qAzMD1FHAR9Ew2yLhtlWOJqsY6Zw6GFH8+KClzmt\n4mm+UP4XdkshL0TP4J3wBIYcdgyHFmZzSEGQ7RvWctyRh5GVaECyc9E+Q5A+xcRCuVTXx4g0xGiI\nJggFhYAIO3fvYcOKNwhteYf+uodtBSMZMnIyJWNH0S8vm+LsINnBAPUx5z91fTROLKHEEwkqIo08\nuXgDM9/eji7ZCRRzXPEVTCsZwiML1xFfrvzPxWP4585tzNu9mS+MLGTaSUfw3pZayjfsAeC4UQUc\nW1zA4QPyKC7MYXBhmFAgwO7aRnZGGojUt3zjbxBhVEAYGxBysgIM7ZtLQU5WcydcIqHURePkZQeR\nNqua7q3z9vH53nPizmQ5jRaqyo7qBnZEGsgOBgiHguRkBxiQHyYY8HoC033X1Y5mVaWmMU445CTd\n/e20/X7GA8OSQleowpoX4V+3Om3ZgRB68UMs63sW6ypqCAWEQEA4YUghhxUKbC6Hf/wnuuV9nu47\nnZs3nsvgghzOPnEwk44ayLb8mwivf4aC9Qt4v+BkFgROY1VtPuecUMx5Yw4hJ6v9ZXYvGPsVnlx8\nJme9+AHFffO4+vQR3DP6ELJDLR/ysrIyTjmzdC8CPBRKR1LbeBUVkUaG98/r/ClJPj1qCJ9U1PD8\nsq2cOKwvpx7ZHxHhC+OHcd3cd7j+j+8iAt//zHFcV3oUIsI5Yzo/b3FhDsWF7a7amVYgIOSH7WPe\nERFhcGEOg/fyve3pRIQ+9tlow96RvRFrgJXPwpI58Mm/od8IKqc9SM3Chyh+6ms8Fr2GP8dLOV7W\nc2Hw3wwLLiMR2EBAYxAu5Pkxv+DmxYO55fwT+PoZI1p/cz36m8A3GYuzNmWmggHhyxMP48sTD+v8\n4L2Ulx0ir3/XPiKHD8jn2jNbL2UwvH8ef772NGa98hEnHdaPM4/tdMi0MeYAs6TQnqot8O7vndER\niZjT/LP6BWd0S9/DYOpdfHLkpXxh9hIikRt5ovAB7mE2Px34ItmVa1EJUh44gYdiF3DW2dOoHlzC\nDY+t5vwxQ9omBB/JyQpy0znHHuxiGGPaYUkh1c41sPB+eO8JZ9hgbl+QoNM7d8QZcPJ0OHIKO2qi\nXPmbhcQTytM3nsPIwefDvBvJ3rMeTr8OGXURh8b78PjsN/jVSw3kZa9jWL9c/ucLY3ybEIwx3Z8l\nhWQ7VsGsyc4Y4/FXwWnXO+PAU1TXR5n+8FvsqG7gj9+YyMhDC50dF/+21XHFwB+/MZFLf/sGWyvr\nmTP9FApzstqczxhjugtLCslevM25Kea6Rc6NO0nmL93C4nW72LKnnpVbq9i4u46Hri7hpMP6dXjK\nQ4py+du3TqeipoGjBxd4WHhjjNl3lhSafLIIVs2Hs/67TULYU9vI9X98h3AoyNB+uRzWP4//Ou8E\nphw3OKNT98vPpl9+thelNsaY/cqSAjhDTP/1384t/6de12b362t2klD4wzUTOfnwjmsGxhjTk/lv\nvtl0Vj4LGxfDlP9y5ihJUbZqB0W5WYwb3vcgFM4YYw4cSwrxKLx0Oww6Hk78cpvdqsorq3cw+ZiB\nPeLuTmOM2RfWfFQ+FyrWwGWPQ7Dt27FySzU7qhvsRitjjC/4u6YQrYdX7namuz1uWtpDylZvB7Ck\nYIzxBU+TgohMFZFVIrJGRGam2d9PRJ4RkfdF5C0RGe1ledpYMgeqNjkjjtq5oeyVVTsYeUih7+aF\nMcb4k2dJQUSCwIPANGAkcLmIjEw57L+AclUdC1wF3O9VedpoiMBrP4cRZ8KR6WeVrK6P8vYnuznz\nOKslGGP8wcuawgRgjaquVdVG4AngwpRjRgIvA6jqB8ARIlLsYZlavDnLWaHp7FvbPeTfayqIJZRS\nazoyxviElx3NQ4ENSY834iy7mew94GLgNRGZAByOs1bztuSDRGQGMAOguLiYsrKyLhUoEolQVlZG\nKBph4pv3UTngFJaticCa9Od7fFkDuSGoXvc+Zet77sijprj9xI8xgz/j9mPM4F3cB3v00Z3A/SJS\nDiwF3oW2692p6mxgNkBJSYl2ZUENSFqMY20Z/LuGgdN+SOnRLedSVR5duI7NlfU0xhIs3b2ZM48b\nwjlnndyl1+suuroISU/mx5jBn3H7MWbwLm4vk8ImYHjS42HutmaqWoW7NrM4U4d+DKz1sEyOeNT5\nN1zYavOWynpue3YF2cEAOVkBcrODfLFkWJoTGGNM7+RlUlgMHCMiI3CSwWVAq7vDRKQvUOv2OVwD\nvOomCm8l3OUcU+5LqG10tt/zxbFcOG6o58UwxpjuxrOkoKoxEbkeeAFnDfk5qrpcRK51988CTgAe\nFREFlgNf96o8rTTVFAKtw6+POovVd7T8pTHG9Gae9imo6nxgfsq2WUm/LwIO/DJcTTWFQOu1Deqj\nTneGJQVjjF/5847m5uaj1KTg1hRC/nxbjDHGn1e/5uaj1jUCqykYY/zOn0mhveajmCUFY4y/+TQp\ndNzRnGtJwRjjUz5NCu79cW36FJpqCv58W4wxxp9Xv076FMJWUzDG+JQ/k0KnQ1L9+bYYY4w/r34d\n9CmIQHbQn2+LMcb48+rX1KfQJinEyQkFkXYW3DHGmN7On0khHgUJQKB1+PWxuDUdGWN8zZ9XwES0\nTX8COM1Hdo+CMcbPfJoU4m2Go4LbfGRJwRjjY/5MCvFom+GoYDUFY4zxNCmIyFQRWSUia0RkZpr9\nRSLyrIi8JyLLReSrXpanWSKWtvmowfoUjDE+59kVUESCwIPANGAkcLmIjEw57FvAClU9ESgFfi4i\n2V6VqVki2mbkEUBdozP6yBhj/MrLr8UTgDWqutZdWe0J4MKUYxQocJfi7APsAmIelsnRXp+C1RSM\nMT7n5SI7Q4ENSY83AhNTjvk1MA/YDBQAl6pqIvVEIjIDmAFQXFxMWVlZlwoUiUQoKyvjhM0bKWyI\n8mbKeXbtqSUnVtPl83dXTXH7iR9jBn/G7ceYwbu4PV15LQOfAcqBs4CjgH+JyGup6zSr6mxgNkBJ\nSYmWlpZ26cXKysooLS2FHY9CvIDU8wTefJnhh/antHRcl87fXTXH7SN+jBn8GbcfYwbv4vayrWQT\nMDzp8TB3W7KvAk+rYw3wMXC8h2VytNOn4Iw+suYjY4x/eXkFXAwcIyIj3M7jy3CaipKtB84GEJFi\n4DhgrYdlciTiEGybFBqiccLW0WyM8THPmo9UNSYi1wMvAEFgjqouF5Fr3f2zgP8HPCIiSwEB/lNV\nd3pVpmbxdu5ojtnNa8YYf/O0T0FV5wPzU7bNSvp9M/BpL8uQVprmo3hCicbVVl0zxviaPxvQ0wxJ\ntbUUjDHGr0khzTQXdc1JwWoKxhj/8mdSSDPNhdUUjDHGt0mhbZ9CfdS5Z85qCsYYP/NpUmi/T8GG\npBpj/MyfSSFNn0JDzJqPjDHGn1fAtH0K1nxkjDE+TQrp+hScmoLdp2CM8TN/JoV4rM00F1ZTMMYY\nvyYFG5JqjDFp+fMKmKb5yG5eM8YY3yaFDqa5sCGpxhgf8zQpiMhUEVklImtEZGaa/d8XkXL3Z5mI\nxEWkv5dlAtoZkur0KYSt+cgY42OeXQFFJAg8CEwDRgKXi8jI5GNU9R5VHaeq44AfAq+o6i6vytSs\nnT4FEQiHLCkYY/zLyyvgBGCNqq5V1UbgCeDCDo6/HHjcw/I4VNsdkhoOBRARz4tgjDHdlZdJYSiw\nIenxRndbGyKSB0wF/uJheRzqNBO17VNIWCezMcb3PF1kZy98Fvh3e01HIjIDmAFQXFxMWVlZl14k\nEonw6oKX+BSwdt161mvLedZtaCCQiHf53N1ZJBLplXF1xI8xgz/j9mPM4F3cXiaFTcDwpMfD3G3p\nXEYHTUeqOhuYDVBSUqKlpaVdKlBZWRmfOq0EXoMjjz6WI09vOc9ftrxLUUMlXT13d1ZWVtYr4+qI\nH2MGf8btx5jBu7i9bD5aDBwjIiNEJBvnwj8v9SARKQLOBP7mYVlaJKLOv2mGpFonszHG7zyrKahq\nTESuB14AgsAcVV0uIte6+5vWar4I+Keq1nhVllbiMeffNB3N1qdgjPE7T/sUVHU+MD9l26yUx48A\nj3hZjlYSHSUFqykYY/zNf1fBpuajNCuvWU3BGON3PkwKbk0hTZ+CTXFhjPE7/yWF9voUYtZ8ZIwx\n/rsKttunYM1Hxhjjw6TQXp+CjT4yxhgfJoX0fQoNVlMwxhgfJoXmPoWWBBBPKI3xhPUpGGN8z39X\nwebmo5aaQkPMVl0zxhjwZVJo23xU19i06pr/3g5jjEnmv6tgmiGp9e6qa1ZTMMb4nf+SQpohqc3r\nM1tSMMb4nA+TQtshqS1JwX9vhzHGJPPfVTBNn0J91Gk+CltNwRjjc54mBRGZKiKrRGSNiMxs55hS\nESkXkeUi8oqX5QHS9ik0uDWFXEsKxhif82zqbBEJAg8C5+Ksz7xYROap6oqkY/oC/wtMVdX1IjLY\nq/I0S9enYENSjTEG8LamMAFYo6prVbUReAK4MOWYLwNPq+p6AFXd7mF5HGn7FJpGH/mvNc0YY5J5\nucjOUGBD0uONwMSUY44FskSkDCgA7lfVx1JPJCIzgBkAxcXFXV6sOhKJsHrTco4FFr65mMbwRwC8\nu8lJFO+9vYSt+b0vMfhxYXM/xgz+jNuPMYN3cXu68lqGr38ycDaQCywSkTdUdXXyQao6G5gNUFJS\nol1drLqsrIxjBx0FH8KkM86E/AEAbHrzE1i6jDPPmMSQopyuR9NN+XFhcz/GDP6M248xg3dxd/q1\nWERuEJF+XTj3JmB40uNh7rZkG4EXVLVGVXcCrwInduG1MtfcfNTSf2DNR8YY48jkKliM00n8J3c0\nkWR47sXAMSIyQkSygcuAeSnH/A04Q0RCIpKH07y0MtPCd0naIanW0WyMMZBBUlDVW4BjgN8B04EP\nReRnInIZeeO2AAAgAElEQVRUJ8+LAdcDL+Bc6P+kqstF5FoRudY9ZiXwD+B94C3gIVVdtg/xdC7e\ntqO5aUhq2OY+Msb4XEZ9CqqqIrIV2ArEgH7AUyLyL1X9QQfPmw/MT9k2K+XxPcA9e1vwLks4CSB5\nltT6WIJwKEDmlSBjjOmdOk0KIvJt4CpgJ/AQ8H1VjYpIAPgQaDcpdEuJKCAQaKkV1Efj5GZb05Ex\nxmRSU+gPXKyqnyRvVNWEiFzgTbE8lIi1WXWtPhonJ2RJwRhjMmlEfx7Y1fRARApFZCI09wn0LPFo\nmvWZbdU1Y4yBzJLCb4BI0uOIu61nSsRb9SeAW1OwkUfGGJNRUhBV1aYHqprg4N/01nWJaKt7FADq\nonGbIdUYY8gsKawVkRtFJMv9+Taw1uuCeSYebdOn0BBN2FKcxhhDZknhWmASzt3ITfMXzfCyUJ5K\n13wUs+YjY4yBDJqB3JlLLzsAZTkw0jQfOX0KVlMwxphM7lPIAb4OjAKaZ4tT1a95WC7vpB2SmrCa\ngjHGkFnz0e+BIcBngFdwJrar9rJQnko7JDVuq64ZYwyZJYWjVfW/gRpVfRQ4n7brIvQcNiTVGGPa\nlUlScGeQY4+IjAaKAO+XzfRKuj6FWIKw9SkYY0xG9xvMdtdTuAVn6us+wH97WiovpfQpJBJKYyxh\n01wYYwyd1BTcSe+qVHW3qr6qqkeq6mBV/W0mJ3fXX1glImtEZGaa/aUiUiki5e7PrV2MI3MpfQr1\nMVtLwRhjmnRYU3AnvfsB8Ke9PbGIBIEHgXNx7m9YLCLzVHVFyqGvqeqBm1gvEWudFGzVNWOMaZbJ\nlfBFEfmeiAwXkf5NPxk8bwKwRlXXqmoj8ARw4T6Vdn9IaT6yVdeMMaZFJn0Kl7r/fitpmwJHdvK8\nocCGpMdNd0OnmiQi7+PcMf09VV2eeoCIzMC9i7q4uJiysrIMit1WJBKhes8uGrMTLHXPsbXGqSl8\nvGY1ZbU9d/aOjkQikS6/Zz2VH2MGf8btx5jBu7gzuaN5xH5/1RbvAIepakREzgP+irP0Z2oZZgOz\nAUpKSrS0tLRLL1ZWVkZBfh70HULTOVZsroLXXuOkMaMoHXNI16Lo5srKyujqe9ZT+TFm8GfcfowZ\nvIs7kzuar0q3XVUf6+Spm4DhSY+HuduSz1GV9Pt8EflfERmoqjs7K1eXpQxJjTTEAOiT03MnfjXG\nmP0lkyvhKUm/5wBn43zD7ywpLAaOEZEROMngMuDLyQeIyBBgm7sG9AScPo6KDMveNSl9CtX1zm0Y\nBTlZ7T3DGGN8I5PmoxuSH4tIX5xO486eFxOR64EXgCAwR1WXi8i17v5ZwCXAN0UkBtQBlyWv3eCJ\nlCGp1fVOTaHAagrGGNOlxXJqgIz6GVR1PjA/ZduspN9/Dfy6C2XoupRpLqobLCkYY0yTTPoUnsUZ\nbQRO885IunDfQreR0qfQ3HwUtuYjY4zJ5OvxvUm/x4BPVHWjR+XxXsrKa9X1MUIBsZvXjDGGzJLC\nemCLqtYDiEiuiByhqus8LZlXEvGUPoUoBTkhROQgFsoYY7qHTL4e/xlIJD2Ou9t6pkTrjuZIfcxG\nHhljjCuTpBByp6kAwP0927sieazNkNQYfcLWyWyMMZBZUtghIp9reiAiFwLe3VzmtTRDUm3kkTHG\nODK5Gl4LzBWRpqGjG4G0dzl3e5oAtNWQ1Kr6KMP65R28MhljTDeSyc1rHwGnikgf93HE81J5RNSZ\nEbX1kNQYhVZTMMYYIIPmIxH5mYj0VdWIO3FdPxG540AUbn9rTgpJfQqRBms+MsaYJpn0KUxT1T1N\nD1R1N3Ced0XyTiARc39xkoCqEmmI2WR4xhjjyiQpBEUk3PRARHKBcAfHd1ui7shat0+htjFOPKE2\nJNUYY1yZfEWeC7wkIg8DAkwHHvWyUF4RbaopOH0KNhmeMca0lklH810i8h5wDs4cSC8Ah3tdMC+k\n9ilEGmzabGOMSZbphD/bcBLCF4GzgJWZPElEporIKhFZIyIzOzjuFBGJicglGZanS1pGHzlJoKqp\npmA3rxljDNBBTUFEjgUud392Ak8CoqpTMjmxiASBB4Fzce5tWCwi81R1RZrj7gL+2aUI9kJL85ET\ntjUfGWNMax3VFD7AqRVcoKpnqOoDOPMeZWoCsEZV17pTYzwBXJjmuBuAvwDb9+LcXdLc0RxsSgrW\nfGSMMck6+op8Mc4SmgtE5B84F/W9mUp0KLAh6fFGYGLyASIyFLgImELrZT9JOW4GMAOguLiYsrKy\nvShGi0CNsyT0shUfsHNHGW9vcJLCsncXsyW3906dHYlEuvye9VR+jBn8GbcfYwbv4m43KajqX4G/\nikg+zjf8m4DBIvIb4BlV3R/NPb8E/lNVEx1NXa2qs4HZACUlJVpaWtqlF3t73ocAjB57EhxXyoev\nroXlK/n0lMm9urZQVlZGV9+znsqPMYM/4/ZjzOBd3JmMPqoB/gj8UUT64XQ2/yed9wFsAoYnPR7m\nbktWAjzhJoSBwHkiEnMT0n7X0tHc0nwkAvnZ1qdgjDGwl2s0u3czN39r78Ri4BgRGYGTDC4Dvpxy\nvua1nkXkEeA5rxICJA9JdcKuqo/RJztEIGAL7BhjDOxlUtgbqhoTketx7msIAnNUdbmIXOvun+XV\na7enbU3B5j0yxphknl4RVXU+MD9lW9pkoKrTvSwLJA9Jbbl5rTf3JRhjzN7qvUNu0mg7JNUmwzPG\nmGS+Sgqps6Ra85ExxrTmq6SQOs1Fdb01HxljTDKfJgWndmAL7BhjTGv+TApJQ1ItKRhjTAt/JoVA\niIZYnMZYwmZINcaYJD5NCllJM6Ran4IxxjTxWVJoGX1k02YbY0xbvkoKgURLn0LEagrGGNOGr5JC\ncp9C01oKfaxPwRhjmvk0KWS1LMVpzUfGGNPMn0khmNVcUyi05iNjjGnmaVIQkakiskpE1ojIzDT7\nLxSR90WkXESWiMgZnpanqaNZAkQarKZgjDGpPLsiikgQeBA4F2cpzsUiMk9VVyQd9hIwT1VVRMYC\nfwKO96xMmnCmuBBpHn1kE+IZY0wLL2sKE4A1qrpWVRtx1ni+MPkAVY2oqroP8wHFQ6KxVquu5WQF\nyAr6qgXNGGM65OUVcSiwIenxRndbKyJykYh8APwd+JqH5XH6FIJNk+HFbDiqMcakOOhtJ6r6DPCM\niHwK+H/AOanHiMgMYAZAcXExZWVlXXqtIxrqicaVf5eVsXZDPcFEosvn6kkikYgv4kzmx5jBn3H7\nMWbwLm4vk8ImYHjS42HutrRU9VUROVJEBqrqzpR9zetCl5SUaGlpaZcKtHnV/5IVzqW0tJQ5a9+i\nOCtKaenpXTpXT1JWVkZX37Oeyo8xgz/j9mPM4F3cXjYfLQaOEZERIpINXAbMSz5ARI4WEXF/Hw+E\ngQqvCiQab9WnYJPhGWNMa55dFVU1JiLXAy8AQWCOqi4XkWvd/bOALwBXiUgUqAMuTep43u9EY62W\n4hxSmOPVSxljTI/k6VdlVZ0PzE/ZNivp97uAu7wsQ7LmIak0rbpmNQVjjEnmq/GYyUNSIzb6yBhj\n2vBZUnCGpMYTSk1j3GoKxhiTwldJIZCIQyDYPG22zZBqjDGt+SopOKOPsqiyyfCMMSYtHyaFkE2G\nZ4wx7fBfUghm2WR4xhjTDp8lhRgEglREGgAYkB8+yCUyxpjuxWdJwelT2FZVD0BxoSUFY4xJ5sOk\nEGJbdQOhgNAvL/tgF8kYY7oVXyWFQCIOwRDbqxoYXBAmEJCDXSRjjOlWfJUUmpqPtlfXM9jmPTLG\nmDZ8mBRCbKuqZ3CB9ScYY0wq/yWFYBbbqxsotpqCMca04WlSEJGpIrJKRNaIyMw0+68QkfdFZKmI\nLBSREz0tj8aIEWBPbdRGHhljTBqeJQURCQIPAtOAkcDlIjIy5bCPgTNVdQzOUpyzvSoPOFNn18ed\nkAcXWE3BGGNSeVlTmACsUdW1qtoIPAFcmHyAqi5U1d3uwzdwluz0jGiMWudmZgZbTcEYY9rwcp6H\nocCGpMcbgYkdHP914Pl0O0RkBjADoLi4uMuLVZ+RiPHJ1l0AbFi9jLIt/uhS8ePC5n6MGfwZtx9j\nBu/i7haT/4jIFJykcEa6/ao6G7dpqaSkRLu6WHXilQQ5RQNgC5w35XQG9PFHbcGPC5v7MWbwZ9x+\njBm8i9vLpLAJGJ70eJi7rRURGQs8BExT1QoPy4NonOqokBW0u5mNMSYdL9tPFgPHiMgIEckGLgPm\nJR8gIocBTwNXqupqD8sCiQRCgqpGp5PZ7mY2xpi2PKspqGpMRK4HXgCCwBxVXS4i17r7ZwG3AgOA\n/xURgJiqlnhSoITTw1zVoAyyG9eMMSYtT/sUVHU+MD9l26yk368BrvGyDM3cpFDZqBQPsqRgjDHp\ndIuO5gMi4SzBWVmvdjez6dGi0SgbN26kvr6+zb6ioiJWrlx5EEp18PgxZmg/7pycHIYNG0ZWVteW\nG/ZRUogDUB0Vm/fI9GgbN26koKCAI444ArfZtVl1dTUFBQUHqWQHhx9jhvRxqyoVFRVs3LiRESNG\ndOm8/hioDxB3agpxAjZDqunR6uvrGTBgQJuEYIyIMGDAgLS1yEz5Jym4fQpRQtZ8ZHo8SwimPfv6\n2fBRUmipKdhkeMYYk55/kkLcrSlo0CbDM6aLvvOd7/DLX/6y+fFnPvMZrrmmZQDhzTffzH333cfm\nzZu55JJLACgvL2f+/JZBiLfddhv33nvvfinPI488wpYtW9Lumz59OiNGjGDcuHEcf/zx3H777Rmd\nb/PmzZ0ec/3113d6rtLSUkpKWkbYL1mypEfcee2fpOA2HxEI0S+va73yxvjd6aefzsKFCwFIJBLs\n3LmT5cuXN+9fuHAhkyZN4tBDD+Wpp54C2iaF/amjpABwzz33UF5eTnl5OY8++igff/xxp+frLCns\nje3bt/P882mndOtULBbbb+XYGz4afeQ0H+Xn5lh7rOk1bn92OSs2VzU/jsfjBIPBfTrnyEML+fFn\nR6XdN2nSJL7zne8AsHz5ckaPHs2WLVvYvXs3eXl5rFy5kvHjx7Nu3TouuOAC3nnnHW699Vbq6up4\n/fXX+eEPfwjAihUrKC0tZf369dx0003ceOONANx3333MmTMHgGuuuYabbrqp+VzLli0D4N577yUS\niTB69GiWLFnCNddcQ35+PosWLSI3NzdtuZs6XvPz8wH4yU9+wrPPPktdXR2TJk3it7/9LX/5y19Y\nsmQJV1xxBbm5uSxatIhly5bx7W9/m5qaGsLhMC+99BIAmzdvZurUqXz00UdcdNFF3H333Wlf9/vf\n/z4//elPmTZtWpvyfPOb32TJkiWEQiHuu+8+pkyZwiOPPMLTTz9NJBIhHo9z++238+Mf/5i+ffuy\ndOlSvvSlLzFmzBjuv/9+ampqmDdvHkcddVRmf9gM+a6mkJ+X/kNjjOncoYceSigUYv369SxcuJDT\nTjuNiRMnsmjRIpYsWcKYMWPIzm6ZVyw7O5uf/OQnXHrppZSXl3PppZcC8MEHH/DCCy/w1ltvcfvt\ntxONRnn77bd5+OGHefPNN3njjTf4v//7P9599912y3LJJZdQUlLCQw89RHl5edqE8P3vf59x48Yx\nbNgwLrvsMgYPHgzA9ddfz+LFi1m2bBl1dXU899xzzeebO3cu5eXlBINBLr30Uu6//37ee+89Xnzx\nxebXKC8v58knn2Tp0qU8+eSTbNiwoc1rA5x22mlkZ2ezYMGCVtsffPBBRISlS5fy+OOPc/XVVzcn\nrnfeeYennnqKV155BYD33nuPWbNmsXLlSn7/+9+zevVq3nrrLa666ioeeOCBTP90GfNPTcHtUyjM\ntf4E03ukfqM/EGP2J02axMKFC1m4cCHf/e532bRpEwsXLqSoqIjTTz89o3Ocf/75hMNhwuEwgwcP\nZtu2bbz++utcdNFFzd/mL774Yl577TU+97nPdbms99xzD5dccgmRSISzzz67uXlrwYIF3H333dTW\n1rJr1y5GjRrFZz/72VbPXbVqFYcccginnHIKAIWFhc37zj77bIqKigAYOXIkn3zyCcOHDyedW265\nhTvuuIO77rqredvrr7/ODTfcAMDxxx/P4YcfzurVzvRv5557Lv37928+9pRTTuGQQw4B4KijjuLT\nn/40AKNGjWLRokVdfm/a47uaQmG+1RSM2RdN/QpLly5l9OjRnHrqqSxatKj5gpuJcLhlBGAwGOyw\n/TwUCpFIJJofd2UMfp8+fSgtLeX111+nvr6e6667jqeeeoqlS5fyjW98Y6/PuTflP+uss6irq+ON\nN97I6NxNSTHdawUCgebHgUDAk34H3ySFxsYGAAr7WFIwZl9MmjSJ5557jv79+xMMBunfvz979uxh\n0aJFaZNCQUEB1dXVnZ538uTJ/PWvf6W2tpaamhqeeeYZJk+eTHFxMdu3b6eiooKGhgaee+65VueO\nRCKdnjsWi/Hmm29y1FFHNSeAgQMHEolEmjvEU8t63HHHsWXLFhYvXgw4tbCuXoRvueWWVv0OkydP\nZu7cuQCsXr2a9evXc9xxx3Xp3Pubb5LCnkgdAEVWUzBmn4wZM4adO3dy6qmnttpWVFTEwIED2xw/\nZcoUVqxYwbhx43jyySfbPe/48eOZPn06EyZMYOLEiVxzzTWcdNJJZGVlceuttzJhwgTOPfdcjj/+\n+ObnTJ8+nZtuuolx48ZRV1fX5pxNfQpjx45lzJgxXHzxxfTt25dvfOMbjB49ms985jPNzUNN57v2\n2msZN24c8XicJ598khtuuIETTzyRc889t8t3Cp933nkMGjSo+fF1111HIpFgzJgxXHrppTzyyCOt\nagQHlap69gNMBVYBa4CZafYfDywCGoDvZXLOk08+Wbti1WtPqf64UN/59z+79PyebMGCBQe7CAdc\nb455xYoV7e6rqqo6gCXpHvwYs2rHcaf7jABLNINrrGcdzSISBB4EzsVZn3mxiMxT1RVJh+0CbgQ+\n71U5mlRGagHoW5Dn9UsZY0yP5WXz0QRgjaquVdVG4AngwuQDVHW7qi4Goh6WA4BjBznNRof0899s\nisYYkykvh6QOBZIH724EJnblRCIyA5gBUFxcTFlZ2V6fo+/uzRzW51hWL11J/ZpdXSlGjxWJRLr0\nnvVkvTnmoqKidjtu4/F4Rp26vYkfY4aO466vr+/y579H3KegqrOB2QAlJSXatflDSikrG9sj5h7Z\n38rKynwXd2+OeeXKle3ei+DHtQX8GDN0HHdOTg4nnXRSl87rZfPRJiD5bo5h7jZjjDHdlJdJYTFw\njIiMEJFs4DJgnoevZ4wxZh95lhRUNQZcD7wArAT+pKrLReRaEbkWQESGiMhG4LvALSKyUUQK2z+r\nMeZgOpBTZx9xxBGMGTOGcePGMWbMGP72t791+pyf/exnnR4zffr0VjestUdEuPnmm5sf33vvvdx2\n222dPq+n8/TmNVWdr6rHqupRqvpTd9ssVZ3l/r5VVYepaqGq9nV/r+r4rMaYg+VAT529YMECysvL\neeqpp5pnUu1IJkkhU+FwmKeffpqdO3d26fkHa+rrfdUjOpqNMe14fiZsXdr8MDceg+A+/rceMgam\n3Zl2l9dTZ7enqqqKfv36NT/+/Oc/z4YNG6ivr+c//uM/uPHGG5k5cyZ1dXWMGzeOUaNGMXfuXB57\n7DHuvfdeRISxY8fy+9//HoBXX32V++67j61bt3L33Xc312qShUIhZsyYwS9+8Qt++tOfttq3bt06\nvva1r7Fz504GDRrEww8/zGGHHcb06dPJycnh3Xff5fTTT6ewsJCPP/6YtWvXsn79en7xi1/wxhtv\n8PzzzzN06FCeffZZsrK61/ouvpnmwhiz77ycOjudKVOmMHr0aM4880zuuOOO5u1z5szh7bffZsmS\nJcyaNYuKigruvPNOcnNzKS8vZ+7cuSxfvpw77riDl19+mffee4/777+/+flbtmzh9ddf57nnnmPm\nzJntxvutb32LuXPnUllZ2Wr7DTfcwNVXX83777/PFVdc0Sqpbdy4kYULF3LfffcB8NFHH/Hyyy8z\nb948vvKVrzBlyhSWLl1Kbm4uf//73/fi3T8wrKZgTE+W8o2+rgdPnT1s2LA2xy1YsICBAwfy0Ucf\ncfbZZ1NaWkqfPn341a9+xTPPPAPApk2b+PDDDxkwYECr57788st88YtfbJ6PKXk66s9//vMEAgFG\njhzJtm3b2i1nYWEhV111Fb/61a9ardewaNEinn76aQCuvPJKfvCDHzTv++IXv9hqoaNp06aRlZXF\nmDFjiMfjTJ06FXDmi1q3bl1G79eBZEnBGLNXUqfOHj58OD//+c8pLCzkq1/9akbn2Jupp8FZR6C4\nuJgVK1ZQW1vLiy++yKJFi8jLy2Py5Mn7NPW1My1Q+2666SbGjx+fcWztTX0dCATIyspqXvnRq6mv\n95U1Hxlj9opXU2d3ZPv27Xz88cccfvjhVFZW0q9fP/Ly8vjggw+ap7YGyMrKam6KOuuss/jzn/9M\nRUUFALt2dW0mg/79+/OlL32J3/3ud83bJk2axBNPPAHA3LlzmTx5cldD63YsKRhj9opXU2enM2XK\nFMaNG8eUKVO48847KS4uZurUqcRiMU444QRmzpzZaurrGTNmMHbsWK644gpGjRrFj370I84880xO\nPPFEvvvd73Y55ptvvrnVKKQHHniAhx9+uLnzOrm/oqeTzqpO3U1JSYkuWbKkS8/tzVMfdMSPcffm\nmFeuXMkJJ5yQdp8fp3zwY8zQcdzpPiMi8raqlnR2XqspGGOMaWZJwRhjTDNLCsb0QD2t2dccOPv6\n2bCkYEwPk5OTQ0VFhSUG04aqUlFRQU5OTpfPYfcpGNPDDBs2jI0bN7Jjx442++rr6/fpgtAT+TFm\naD/unJyctDcCZsqSgjE9TFZWFiNGjEi7r6ysrMuLq/RUfowZvIvb0+YjEZkqIqtEZI2ItJlgRBy/\ncve/LyLjvSyPMcaYjnmWFEQkCDwITANGApeLyMiUw6YBx7g/M4DfeFUeY4wxnfOypjABWKOqa1W1\nEXgCuDDlmAuBx9TxBtBXRA7xsEzGGGM64GWfwlBgQ9LjjcDEDI4ZCmxJPkhEZuDUJAAiIrKqi2Ua\nCHRtxYyezY9x+zFm8GfcfowZ9j7uwzM5qEd0NKvqbGD2vp5HRJZkcpt3b+PHuP0YM/gzbj/GDN7F\n7WXz0SZgeNLjYe62vT3GGGPMAeJlUlgMHCMiI0QkG7gMmJdyzDzgKncU0qlApapuST2RMcaYA8Oz\n5iNVjYnI9cALQBCYo6rLReRad/8sYD5wHrAGqAUyW8Wi6/a5CaqH8mPcfowZ/Bm3H2MGj+LucVNn\nG2OM8Y7NfWSMMaaZJQVjjDHNfJMUOptyo7sTkTkisl1EliVt6y8i/xKRD91/+yXt+6Eb6yoR+UzS\n9pNFZKm771firiIuImERedLd/qaIHHEg40tHRIaLyAIRWSEiy0Xk2+723h53joi8JSLvuXHf7m7v\n1XGDMxOCiLwrIs+5j/0Q8zq3vOUissTddvDiVtVe/4PT0f0RcCSQDbwHjDzY5drLGD4FjAeWJW27\nG5jp/j4TuMv9faQbYxgY4cYedPe9BZwKCPA8MM3dfh0wy/39MuDJbhDzIcB49/cCYLUbW2+PW4A+\n7u9ZwJtu2Xt13G5Zvgv8EXjOD59xtyzrgIEp2w5a3Af9DTlAb/ppwAtJj38I/PBgl6sLcRxB66Sw\nCjjE/f0QYFW6+HBGgJ3mHvNB0vbLgd8mH+P+HsK5U1IOdswp8f8NONdPcQN5wDs4swH06rhx7lN6\nCTiLlqTQq2N2y7KOtknhoMXtl+aj9qbT6OmKteW+jq1Asft7e/EOdX9P3d7qOaoaAyqBAd4Ue++5\nVd6TcL419/q43WaUcmA78C9V9UPcvwR+ACSStvX2mAEUeFFE3hZnSh84iHH3iGkuTOdUVUWkV44v\nFpE+wF+Am1S1ym0qBXpv3KoaB8aJSF/gGREZnbK/V8UtIhcA21X1bREpTXdMb4s5yRmquklEBgP/\nEpEPknce6Lj9UlPordNpbBN3Vln33+3u9vbi3eT+nrq91XNEJAQUARWelTxDIpKFkxDmqurT7uZe\nH3cTVd0DLACm0rvjPh34nIisw5lR+SwR+QO9O2YAVHWT++924BmcGaYPWtx+SQqZTLnRE80DrnZ/\nvxqnzb1p+2XuqIMROOtVvOVWR6tE5FR3ZMJVKc9pOtclwMvqNkIeLG4ZfwesVNX7knb19rgHuTUE\nRCQXpx/lA3px3Kr6Q1UdpqpH4Pz/fFlVv0IvjhlARPJFpKDpd+DTwDIOZtwHu5PlAHbmnIczeuUj\n4EcHuzxdKP/jOFOKR3HaC7+O0y74EvAh8CLQP+n4H7mxrsIdheBuL3E/dB8Bv6blrvYc4M84U468\nBRzZDWI+A6e99X2g3P05zwdxjwXedeNeBtzqbu/VcSeVuZSWjuZeHTPOiMj33J/lTdemgxm3TXNh\njDGmmV+aj4wxxmTAkoIxxphmlhSMMcY0s6RgjDGmmSUFY4wxzSwpmB5NRAa4s0uWi8hWEdmU9Dg7\nw3M8LCLHdXLMt0Tkiv1T6rTnv1hEjvfq/MZkyoakml5DRG4DIqp6b8p2wfmsJ9I+sRtw7959SlX/\nerDLYvzNagqmVxKRo8VZh2Euzk1Bh4jIbBFZIs4aBbcmHfu6iIwTkZCI7BGRO8VZy2CROx8NInKH\niNyUdPyd4qx5sEpEJrnb80XkL+7rPuW+1rg0ZbvHPeZ9EblLRCbj3JT3C7eGc4SIHCMiL7iTpL0q\nIse6z/2DiPzG3b5aRKa528eIyGL3+e+LyJFev8emd7IJ8Uxvdjxwlao2LVwyU1V3ufO/LBCRp1R1\nRcpzioBXVHWmiNwHfI3/3979hNgUxmEc/z4SmzHsRIlkbNSwIeXPwoKdTCJjS6wk2UqWlI0sJDts\nKHhSu5sAAAIiSURBVJPFDJPIihXKwkRmFlJYCCVhpMfifee6M2YYumMx83zq1lm859xz6977u+/v\nnPu8cHKcY8v2OknbgeOUbKJDwBvbOyWtpkRej95JWkgpAKtsW9IC2x8k3aBppiDpLrDf9pCkDZR/\nqG6th1kCrKVEHNyWtIKSmX/a9hVJcymZ+hF/LUUhprOhkYJQdUvaR3nfL6YsWDK2KHy2fbNuPwQ2\nTXDsnqYxy+r2RuAUgO3Hkp6Ms987SjT0BUl9QO/YATX3aD1wTT8TYZs/q1drK+yZpJeU4nAfOCZp\nKdBje3CC8474rbSPYjr7NLIhqQM4DGyx3Qn0UzJhxhpu2v7OxD+cvk5izC9sf6Nk1FwHdgB94wwT\n8Nb2mqZHc3T22AuBtn0J6Krn1S9p82TPKaJZikLMFO3AR0qS5CJg2x/G/4t7wG4oPX7KTGSUmojZ\nbrsXOEJZOIh6bvMAbL8HXkvqqvvMqu2oEbtUrKS0kp5LWm570PYZyuyjcwpeX8wAaR/FTPGI0ip6\nCrygfIG32lngoqSB+lwDlFWums0HemrffxZlTWIoKbjnJR2lzCD2AOfqHVVzgMuUJE0o+fgPgDbg\ngO1hSXsldVNSdF8BJ6bg9cUMkFtSI1qkXsCebftLbVfdAjpclkBs1XPk1tWYUpkpRLROG3CnFgcB\nB1tZECL+h8wUIiKiIReaIyKiIUUhIiIaUhQiIqIhRSEiIhpSFCIiouEHPRQb6HsgtdIAAAAASUVO\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa6b4f6fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(False, 1, tf.nn.sigmoid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this example, we switched to a sigmoid activation function. It appears to hande the higher learning rate well, with both networks achieving high accuracy.\n",
    "\n",
    "The cell below shows a similar pair of networks trained for only 2000 iterations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 2000/2000 [00:01<00:00, 1167.28it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.920799732208252\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 2000/2000 [00:04<00:00, 490.92it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.951799750328064\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.9227001070976257\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9463001489639282\n"
     ]
    },
    {
     "data": {
      "image/png": "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\ng+M4jhPH/wPv7ZafvD0vxwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa7c34fbe0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(False, 1, tf.nn.sigmoid, 2000, 50)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, even though these parameters work well for both networks, the one with batch normalization gets over 90% in 400 or so batches, whereas the other takes over 1700. When training larger networks, these sorts of differences become more pronounced."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a ReLU activation function, a learning rate of 2, and reasonable starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:35<00:00, 1412.09it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.09859999269247055\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:36<00:00, 518.06it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9827996492385864\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.10099999606609344\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9827001094818115\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nmZmZ0eUzMzO58847ufjii6moqODiiy8GYNmyZbz88su8++673HHHHTQ2NvLee+/xyCOP8M477zB3\n7lz+8Ic/8MEHHyRMywUXXEBpaSl//OMfqaioiBsQbr31VsaOHcuAAQO45JJL6N27NwA33HAD8+bN\nY9GiRdTW1vLiiy9G1zdjxgwqKirw+/1cfPHFPPDAAyxYsIBXX301uo2KigqeeuopFi5cyFNPPcW6\ndevabBvgxBNPJDMzk9dff73F9IceeggRYeHChTzxxBN87Wtfiwau999/n2eeeYY33ngDgAULFjBt\n2jSWLl3Kn//8Z1asWMG7777LlVdeyYMPPpjsV5e09Kk223UK5lOodY3+QJyzP2HCBGbPns3s2bP5\n7ne/y4YNG5g9ezaFhYWcdNJJSa3jrLPOIisri6ysLHr37s3mzZt56623OP/886O1+S9/+cv897//\n5dxzz+10Wn/xi19wwQUXEAwGOf3006PdW6+//jo///nPqampYceOHYwaNYpzzjmnxWeXL19O3759\nGTduHAAFBQXReaeffjqFhYUAjBw5kk8++YSBAwcSz2233cZdd93FPffcE5321ltvceONNwIwfPhw\nBg8ezIoV7vZvn//85+nevXt02XHjxtG3b18Ahg4dyhe+8AUARo0axZw5czq9bxJJw5aCjSkYsy+a\nxhUWLlzI6NGjOeGEE5gzZ060wE1GVlZW9LXf72+3/zwjI4NIJBJ935lz8Lt160ZZWRlvvfUWdXV1\nXH/99TzzzDMsXLiQr3/963u9zr1J/2mnnUZtbS1z585Nat1NQTHetnw+X/S9z+dLybhDGgUFG1Mw\nZn+YMGECL774It27d8fv99O9e3d27drFnDlz4gaF/Px8qqqqOlzvySefzPPPP09NTQ3V1dU899xz\nnHzyyZSUlLBlyxa2b99OfX09L774Yot1B4PBDtcdCoV45513GDp0aDQA9OzZk2AwGB0Qb53WI488\nkk2bNjFv3jzAtcI6WwjfdtttLcYdTj75ZGbMmAHAihUrWLt2LUceeWSn1r2/pU8JGb11dufHFOoa\nw3y0OchHW6ooHdydQT1yEy67cksVu2oaKT2se8JlDoR3P97BK2saWf1W+2ddJKN/cQ5fGFmS8OKY\nxnCElxdXUnZkb7plNR9aqsqrS7dw9IBCehdkt7uNxnCE1VurWVa5hyP75DO8T0HCZTfvqeNfiyoJ\n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\nL7MhH1jUT5fVAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa6b4cafd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(False, 2, tf.nn.relu)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With this very large learning rate, the network with batch normalization trains fine and almost immediately manages 98% accuracy. However, the network without normalization doesn't learn at all."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a sigmoid activation function, a learning rate of 2, and reasonable starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:35<00:00, 1395.37it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.9795997142791748\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:38<00:00, 506.05it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9803997278213501\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.9782001376152039\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9782000780105591\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n8Q8Atm/fzrRp09i4cSPXXHMN3/ve99p9369+9at85zvfYfr06UeU57Of/SxLly4lFArx0EMPMXXq\nVB577DGeeeYZIpEI8Xice++9l29961uUlpayYsUKrr/+eiZOnMjDDz9MQ0MD8+bNY9SoUZn9w2bI\nRzUF5zqF3FxLCsZka+DAgYRCIbZu3crChQu56KKLuOCCC1i0aBFLly5l4sSJ5OQcvjg0JyeHb3/7\n29xwww1UVVVxww03ALB27VpeeOEFXn/9de69916i0ShvvPEGv/zlL3nttddYvHgx//d//8dbb73V\nYVmuu+46ysvL+fnPf05VVVW7CeGrX/0qkyZNYvDgwdx4443069cPgNtvv50lS5awcuVKGhsbef75\n55PHmzt3LlVVVQSDQW644QYefvhhli1bxosvvph8j6qqKp566ilWrFjBU089xbZt2454b4CLLrqI\nnJwcFixY0Gb9I488goiwYsUKnnjiCW655ZZk4nrzzTd5+umnefnllwFYtmwZs2fPZs2aNfz6179m\n/fr1vP7669x888385Cc/yfSfLmP+qSm4fQp5uXY1s+k+0n/Rn4ox+1OmTGHhwoUsXLiQL3/5y9TU\n1LBw4UJKSkq4+OKLMzrG+9//fnJzc8nNzaVfv37s2rWLV199lWuuuSb5a/7aa6/ln//8Jx/60Iey\nLuv3v/99rrvuOiKRCJdffnmyeWvBggV873vf49ChQ+zbt4/x48fzwQ9+sM1r161bx4ABAzj//PMB\nKC4uTm67/PLLKSkpAWDcuHG88847DBkyhPZ885vf5L777uOBBx5Irnv11Ve54447ABg7dizDhg1j\n/Xpn+rcrrriCXr16Jfc9//zzGTBgAACjRo3ife97HwDjx49n0aJFWX82HfFRTaE1KeR1ckGM6dpa\n+xVWrFjBhAkTuPDCC1m0aFHyhJuJ1Bp7MBg8avt5KBQikUgkl7MZg19YWEhFRQWvvvoqTU1NfO5z\nn+Ppp59mxYoVfOYznznuYx5P+S+77DIaGxtZvHhxRsduTYrtvVcgEEguBwIBT/odfJQUnA8vP8+a\nj4w5EVOmTOH555+nV69eBINBevXqxYEDB1i0aFG7SaGoqIiDBw8e87iXXHIJf/zjHzl06BANDQ08\n++yzXHLJJZSVlbF7925qa2tpbm7m+eefb3PsSCRyzGPHYjFee+01Ro0alUwAffr0IRKJJDvE08s6\nZswYduzYwZIlSwCnFpbtSfib3/xmm36HSy65hLlz5wKwfv16tm7dypgxY7I69snmm6SgbvNRgSUF\nY07IxIkT2bt3LxdeeGGbdSUlJfTp0+eI/adOncrq1auZNGkSTz31VIfHPffcc5kxYwaTJ0/mggsu\n4NZbb+Wcc84hHA5z9913M3nyZK644grGjh2bfM2MGTO48847mTRpEo2NjUccs7VP4ayzzmLixIlc\ne+21lJaW8pnPfIYJEyZw5ZVXJpuHWo932223MWnSJOLxOE899RR33HEHZ599NldccUXWVwpfddVV\n9O3bN7n8uc99jkQiwcSJE7nhhht47LHHTp/+TlX17AFMA9YBG4BZ7WwfCywCmoGvZHLM8847T7Nx\nqOpZ1W8V69PPz8/q9V3ZggULOrsIp1x3jnn16tUdbquvrz+FJTk9+DFm1aPH3d53BFiqGZxjPasp\niEgQeASYDowDbhKRcWm77QO+AJycK1mO4lBzMwA98k+TbGyMMachL5uPJgMbVHWTqrYATwJXp+6g\nqrtVdQkQ9bAcAOztdS4zWr5GsNcwr9/KGGO6LC+HpA4CUgfvVgMXZHMgEZkJzAQoKyujsrLyuI+x\npjZOZWISF2zcQvhA+2OKu6tIJJLVZ9aVdeeYS0pKOuy4jcfjGXXqdid+jBmOHndTU1PW3/8ucZ2C\nqs4B5gCUl5drNvOHNK7YAUve5NKLzmfcwOJjv6Abqays7BJzrpxM3TnmNWvWdHgtgh/vLeDHmOHo\ncefl5XHOOedkdVwvm49qgNSrOQa76zrF6LIiPvKuMANL7ToFY4zpiJdJYQkwWkRGiEgOcCMwz8P3\nO6oz+hXy/pE5lBbYFc3GGNMRz5KCqsaA24EXgDXA71R1lYjcJiK3AYhIfxGpBr4MfFNEqkXEX207\nxnQhp3Lq7OHDhzNx4kQmTZrExIkT+dOf/nTM13z3u9895j4zZsxoc8FaR0SEu+66K7n84IMPcs89\n9xzzdV2dpxevqep8VX2Xqo5S1e+462ar6mz3+U5VHayqxapa6j6vP/pRjTGd5VRPnb1gwQKqqqp4\n+umnkzOpHk0mSSFTubm5PPPMM+zduzer13fW1Ncnqkt0NBtjOvCXWbBzRXIxPx6D4An+t+4/Eabf\n3+4mr6fO7kh9fT09e/ZMLn/4wx9m27ZtNDU18e///u984QtfYNasWTQ2NjJp0iTGjx/P3Llzefzx\nx3nwwQcREc466yx+/etfA/DKK6/w0EMPsXPnTr73ve8lazWpQqEQM2fO5Ic//CHf+c532mzbsmUL\nn/rUp9i7dy99+/bll7/8JUOHDmXGjBnk5eXx1ltvcfHFF1NcXMzmzZvZtGkTW7du5Yc//CGLFy/m\nL3/5C4MGDeK5554jHD697gTpm2kujDEnzsups9szdepUJkyYwKWXXsp9992XXP/oo4/yxhtvsHTp\nUmbPnk1tbS33338/+fn5VFVVMXfuXFatWsV9993HSy+9xLJly3j44YeTr9+xYwevvvoqzz//PLNm\nzeow3s9//vPMnTuXurq6NuvvuOMObrnlFpYvX87HPvaxNkmturqahQsX8tBDDwGwceNGXnrpJebN\nm8fHP/5xpk6dyooVK8jPz+fPf/7zcXz6p4bVFIzpytJ+0Td24amzBw8efMR+CxYsoE+fPmzcuJHL\nL7+ciooKCgsL+fGPf8yzzz4LQE1NDW+//Ta9e/du89qXXnqJj3zkI8n5mFKno/7whz9MIBBg3Lhx\n7Nq1q8NyFhcXc/PNN/PjH/+4zf0aFi1axDPPPAPAJz7xCb72ta8lt33kIx9pc6Oj6dOnEw6HmThx\nIvF4nGnTpgHOfFFbtmzJ6PM6lSwpGGOOS/rU2UOGDOEHP/gBxcXFfPKTn8zoGMcz9TQ49xEoKytj\n9erVHDp0iBdffJFFixZRUFDAJZdcckJTXzvTAnXszjvv5Nxzz804to6mvg4EAoTD4eTtgL2a+vpE\nWfORMea4eDV19tHs3r2bzZs3M2zYMOrq6ujZsycFBQWsXbs2ObU1QDgcTjZFXXbZZfz+97+ntrYW\ngH379mX13r169eL666/nF7/4RXLdlClTePLJJwGYO3cul1xySbahnXYsKRhjjotXU2e3Z+rUqUya\nNImpU6dy//33U1ZWxrRp04jFYpx55pnMmjWrzdTXM2fO5KyzzuJjH/sY48eP5xvf+AaXXnopZ599\nNl/+8pezjvmuu+5qMwrpJz/5Cb/85S+Tndep/RVdnRyr6nS6KS8v16VLl2b12u489cHR+DHu7hzz\nmjVrOPPMM9vd5scpH/wYMxw97va+IyLyhqqWH+u4VlMwxhiTZEnBGGNMkiUFY7qgrtbsa06dE/1u\nWFIwpovJy8ujtrbWEoM5gqpSW1tLXl72s0HbdQrGdDGDBw+murqaPXv2HLGtqanphE4IXZEfY4aO\n487Ly2v3QsBMWVIwposJh8OMGDGi3W2VlZVZ31ylq/JjzOBd3J42H4nINBFZJyIbROSICUbE8WN3\n+3IROdfL8hhjjDk6z5KCiASBR4DpwDjgJhEZl7bbdGC0+5gJ/NSr8hhjjDk2L2sKk4ENqrpJVVuA\nJ4Gr0/a5GnhcHYuBUhEZ4GGZjDHGHIWXfQqDgG0py9XABRnsMwjYkbqTiMzEqUkARERkXZZl6gNk\nd8eMrs2PcfsxZvBn3H6MGY4/7mGZ7NQlOppVdQ4w50SPIyJLM7nMu7vxY9x+jBn8GbcfYwbv4vay\n+agGGJKyPNhdd7z7GGOMOUW8TApLgNEiMkJEcoAbgXlp+8wDbnZHIV0I1KnqjvQDGWOMOTU8az5S\n1ZiI3A68AASBR1V1lYjc5m6fDcwHrgI2AIeAzO5ikb0TboLqovwYtx9jBn/G7ceYwaO4u9zU2cYY\nY7xjcx8ZY4xJsqRgjDEmyTdJ4VhTbpzuRORREdktIitT1vUSkb+LyNvu354p277uxrpORK5MWX+e\niKxwt/1Y3LuIi0iuiDzlrn9NRIafyvjaIyJDRGSBiKwWkVUi8kV3fXePO09EXheRZW7c97rru3Xc\n4MyEICJvicjz7rIfYt7ilrdKRJa66zovblXt9g+cju6NwEggB1gGjOvsch1nDO8BzgVWpqz7HjDL\nfT4LeMB9Ps6NMRcY4cYedLe9DlwICPAXYLq7/nPAbPf5jcBTp0HMA4Bz3edFwHo3tu4etwCF7vMw\n8Jpb9m4dt1uWLwO/BZ73w3fcLcsWoE/auk6Lu9M/kFP0oV8EvJCy/HXg651driziGE7bpLAOGOA+\nHwCsay8+nBFgF7n7rE1ZfxPws9R93OchnCslpbNjTov/T8AVfoobKADexJkNoFvHjXOd0j+Ayzic\nFLp1zG5ZtnBkUui0uP3SfNTRdBpdXZkevq5jJ1DmPu8o3kHu8/T1bV6jqjGgDujtTbGPn1vlPQfn\nV3O3j9ttRqkCdgN/V1U/xP0j4GtAImVdd48ZQIEXReQNcab0gU6Mu0tMc2GOTVVVRLrl+GIRKQT+\nANypqvVuUynQfeNW1TgwSURKgWdFZELa9m4Vt4h8ANitqm+ISEV7+3S3mFO8W1VrRKQf8HcRWZu6\n8VTH7ZeaQnedTmOXuLPKun93u+s7irfGfZ6+vs1rRCQElAC1npU8QyISxkkIc1X1GXd1t4+7laoe\nABYA0+jecV8MfEhEtuDMqHyZiPyG7h0zAKpa4/7dDTyLM8N0p8Xtl6SQyZQbXdE84Bb3+S04be6t\n6290Rx2MwLlfxetudbReRC50RybcnPaa1mNdB7ykbiNkZ3HL+Atgjao+lLKpu8fd160hICL5OP0o\na+nGcavq11V1sKoOx/n/+ZKqfpxuHDOAiPQQkaLW58D7gJV0Ztyd3clyCjtzrsIZvbIR+EZnlyeL\n8j+BM6V4FKe98NM47YL/AN4GXgR6pez/DTfWdbijENz15e6XbiPwPxy+qj0P+D3OlCOvAyNPg5jf\njdPeuhyoch9X+SDus4C33LhXAne767t13CllruBwR3O3jhlnROQy97Gq9dzUmXHbNBfGGGOS/NJ8\nZIwxJgOWFIwxxiRZUjDGGJNkScEYY0ySJQVjjDFJlhRMlyYivd3ZJatEZKeI1KQs52R4jF+KyJhj\n7PN5EfnYySl1u8e/VkTGenV8YzJlQ1JNtyEi9wARVX0wbb3gfNcT7b7wNOBevfu0qv6xs8ti/M1q\nCqZbEpEzxLkPw1yci4IGiMgcEVkqzj0K7k7Z91URmSQiIRE5ICL3i3Mvg0XufDSIyH0icmfK/veL\nc8+DdSIyxV3fQ0T+4L7v0+57TWqnbN9391kuIg+IyCU4F+X90K3hDBeR0SLygjtJ2isi8i73tb8R\nkZ+669eLyHR3/UQRWeK+frmIjPT6Mzbdk02IZ7qzscDNqtp645JZqrrPnf9lgYg8raqr015TArys\nqrNE5CHgU8D97RxbVHWyiHwIuBtnbqI7gJ2q+m8icjbOlNdtXyRShpMAxquqikipqh4Qkfmk1BRE\nZAFwq6puFJGLca5QfZ97mCHA+ThTHLwoImfgzJn/oKo+JfL/27tj2BqjMIzj/6cRlqqZhUhqbIwG\nDBarDkStEkYRq8FqFIOIDZNEY2ijkRiZkBg0RA0iYREGEVTkMbyn1+dqKbk19D6/5CZnON/9zpfc\ne9973nPyHm2iaupH/LUEhVjPXiwFhGZK0nHqc7+NOrCkPyh8sn27tR8C+1Z47+lOnx2tvRc4D2D7\nsaQny1z3jioNfUXSLDDT36HVPdoD3NSPirDd7+qNlgp7JukVFRzuA2clbQembS+sMO6I30r6KNaz\nj0sNSePAKeCA7QlgjqoJ02+x0/7Gyn+cvqyizy9sf6Vq1NwCDgGzy3QT8Nb27s6rWzq7fyHQtq8B\nk21cc5L2r3ZMEV0JCjEsxoAPVCXJrcDBP/T/F/eAI1A5fmom8pNWEXPM9gxwmjo4iDa2zQC23wNv\nJClj+fYAAADFSURBVE22a0ZaOmrJYZVdVCrpuaSdthdsX6BmHxNr8HwxBJI+imHxiEoVPQVeUj/g\ng3YRuCppvt1rnjrlqmsLMN3y/iPUmcRQVXAvSzpDzSCOApfajqqNwHWqkiZUffwHwChwwvaipGOS\npqgquq+Bc2vwfDEEsiU1YkDaAvYG259buuoOMO46AnFQ98jW1VhTmSlEDM4ocLcFBwEnBxkQIv6H\nzBQiIqInC80REdGToBARET0JChER0ZOgEBERPQkKERHR8x2S+HysbSK9rwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa77bc9048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(False, 2, tf.nn.sigmoid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Once again, using a sigmoid activation function with the larger learning rate works well both with and without batch normalization.\n",
    "\n",
    "However, look at the plot below where we train models with the same parameters but only 2000 iterations. As usual, batch normalization lets it train faster. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 2000/2000 [00:01<00:00, 1170.27it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.9383997917175293\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 2000/2000 [00:04<00:00, 495.04it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9573997259140015\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.9360001087188721\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9524001479148865\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nl/LyctLT0xkwYAB5eXksXryYuXPnIiKkpaXx5ptvArBu3TrmzZvHkSNHeP755329HH9atmxJTk4O\n8+fP57nnnqv22YEDB3jsscc4duwYnTp1YtGiRVx99dVkZ2cTFxfH119/zU033URCQgL79+9n3759\nHDx4kPnz57NhwwY++ugjunTpwvvvv09sbOwlv3ukaFbhMwzDaBhehuyujczMTAYOHMitt97KrFmz\nfOkLFy5k8+bNbNq0iQULFlBWVsbs2bNp06YNW7ZsIS8vj+3btzNr1izWrFnD1q1beemll3zlDx8+\nzPr161m1ahW5ubl1ft8nnniCvLw8Tpw4US19ypQpPPLII2zbto3x48dXM24lJSV8/vnnzJs3D4Di\n4mLWrFnDypUreeihh8jMzKSwsJA2bdrwwQcfBNH64cV6DobRlKnjF359KI+ykN1du3YNyJefn09y\ncjLFxcXcdtttjBgxgvj4eBYsWMCKFSsAOHToEHv27OGqq66qVnbNmjWMGzfOF+/JPwz22LFjiYmJ\noX///hw9erROnQkJCUyYMIEFCxZU2y+ioKCA5cuXA/Dwww/zzDPP+D4bN25ctU2URo8eTWxsLKmp\nqVRWVpKVlQU48agOHDhQr/aKBGYcDMMIipohu7t168aLL75IQkICjz76aL3qCCbkNTj7GKSkpFBU\nVMTZs2dZvXo1BQUFtG3blhEjRjQo5Pbl4stNnTqVIUOG1Pu71RVyOyYmhtjYWETE9z6axyXMrWQY\nRlB4FbL7UpSWlrJ//366d+/OiRMn6NixI23btmXnzp3V9kmIjY31uahGjhzJ22+/TVlZGQDHjx8P\n6dxJSUncd999vP7667604cOHs2TJEgDy8vLIyMgI9atFLWYcDMMICq9CdtdGZmYm6enpZGZmMnv2\nbFJSUsjKyuL8+fP069eP3NzcajpycnJIS0tj/PjxDBgwgOnTp3PrrbcyaNAgnn766ZC/87Rp06rN\nWnr55ZdZtGiRb5DbfzzjikFVm9Truuuu01DJz88PuazXmLbQiGZtqt7oKyoqapR6Tp482Sj1eIFp\nC40qbbXdI8AmDeJZaz0HwzAMIwAzDoZhGEYAZhwMowmiHu7gaDRtGuveMONgGE2MuLg4ysrKzEAY\nAagqZWVlxMXFNbguW+dgGE2Mrl27UlJSwvfff9+geioqKhrlIeIFpi00Kioq6NChQ60LCoPFjINh\n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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa6b131fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(False, 2, tf.nn.sigmoid, 2000, 50)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the rest of the examples, we use really bad starting weights. That is, normally we would use very small values close to zero. However, in these examples we choose randome values with a standard deviation of 5. If you were really training a neural network, you would **not** want to do this. But these examples demonstrate how batch normalization makes your network much more resilient.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a ReLU activation function, a learning rate of 0.01, and bad starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:43<00:00, 1147.21it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.0957999974489212\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:37<00:00, 515.05it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.7945998311042786\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.09799998998641968\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.7990000247955322\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nB8JCjwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa7c2fd160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(True, 0.01, tf.nn.relu)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As the plot shows, without batch normalization the network never learns anything at all. But with batch normalization, it actually learns pretty well and gets to almost 80% accuracy. The starting weights obviously hurt the network, but you can see how well batch normalization does in overcoming them. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a sigmoid activation function, a learning rate of 0.01, and bad starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:45<00:00, 1108.50it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.22019998729228973\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:34<00:00, 531.21it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.8591998219490051\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.22699999809265137\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.8527000546455383\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8VfX9+PHXOzd7DyDsIYJsIkZQlBq0VNx7VKvS1lLb\notXa9mt/ba32a1vratXSUmudpaK1DlT8UldUCshQhuxNwk4CITd7vH9/fG7CJWTchNwM7vv5eOSR\ne8/5nHM+n5ub8z7ns46oKsYYYwxAWEdnwBhjTOdhQcEYY0wdCwrGGGPqWFAwxhhTx4KCMcaYOhYU\njDHG1LGgcAITkYEioiIS7nv/rojcEkjaVhzr/4nI08eTXxMcIjJLRH7Z0flojohkiciatk5rWkZs\nnELnJSL/ByxR1XvrLb8M+CvQV1Wrmth+ILANiGgqXSvSZgH/UNW+zRaijfiO+RFwj6r+vr2O255E\n5D7g50CZb9Ee4D/Ab1R1T0flqyEiMgl4t/YtEAsU+yUZoao72z1j5rjZnULn9jzwDRGRestvAmY3\nd/I+wdwCFAA3t/eBW3v31Eovq2oCkApcAfQElotIr9bsTEQ8bZm5Wqr6qarGq2o8MNK3OLl2Wf2A\nICJhImLnmy7A/kid2xtAGjCpdoGIpAAXAy/43l8kIl+IyGERyfFdbTZIRLJF5Fbfa4+IPCIieSKy\nFbioXtpvisg6ESkSka0i8l3f8jjcFWJvEfH6fnqLyH0i8g+/7S8VkTUicsh33OF+67aLyI9FZJWI\nFIrIyyIS3US+44CrgR8AQ0Qks976s0Vkoe9YOSIyzbc8RkQeFZEdvuMs8C3LEpHcevvYLiJf9b2+\nT0ReFZF/iMhhYJqIjBeRRb5j7BGRP4lIpN/2I0XkPREpEJF9vuq0niJSIiJpfunGicgBEYlorLwA\nqlqpqmuA64ADwN2+7aeJyIJ6eVcROdn3+jkR+YuIzBORYmCyb9kDvvVZIpIrIneLyH5fWb7pt680\nEXnL931aKiIP1D9eoHyf9/+KyCLcXUR/EbnV73u1pfb76Ev/VRHZ7vc+V0R+JCKrfX+/l0QkqqVp\nfet/JiJ7RWSXiHzH95kNbE25TnQWFDoxVS0FXuHoq+NrgfWqutL3vti3Phl3Yv+eiFwewO6/gwsu\npwKZuJOuv/2+9YnAN4E/iMg4VS0GLgB2+10V7vbfUESGAi8BdwLdgXnAW/4nUV85pgKDgDHAtCby\neiXgBf4FzMfdNdQeawAuSD3pO1YGsMK3+hHgNGAi7sr7p0BNUx+Kn8uAV3Gf62ygGrgL6AacCZwH\nfN+XhwTgfeD/gN7AycAHqroXyPaVtdZNwBxVrQwkE6paDbyJ34VBAG4AfgMkAA2d0HsCSUAf4NvA\nTHEXGwAzcd+pnrjPucE2qBa4CfgW7nuUC+zDfU8Tcd/BJ0VkTBPbXwtMAU7C/S1vamlaEbkYuB2Y\nDAwFzm19cU58FhQ6v+eBq/2upG/2LQNAVbNVdbWq1qjqKtzJ+JwA9nst8EdVzVHVAuB3/itV9R1V\n3aLOx7i67UBPTNcB76jqe76T3yNADO7kXOsJVd3tO/ZbuJN5Y27BVatUA/8Erve70r4BeF9VX/Jd\nXeer6gpxVRXfAn6oqrtUtVpVF6pqeYBlWKSqb/g+11JVXa6qi1W1SlW349p0aj/ni4G9qvqoqpap\napGqfuZb9zzwDairyvk68GKAeai1GxfUAvWmqv7Xl/eyBtZXAr/2fV7zcAH3FF/+rgJ+paolqroW\nv+9aKz2jqut8x6pS1bdUdavve/Uh8AFNf6/+qKp7VTUfeJumvyeNpb0W+LsvH8XA/cdZphOaBYVO\nTlUXAHnA5SIyGBiPOzECICITROQjX5VEIXAb7mq2Ob2BHL/3O/xXisgFIrLYVx1yCLgwwP3W7rtu\nf6pa4ztWH780e/1elwDxDe1IRPrhrvBm+xa9CURzpLqrH7ClgU27+dI1tC4Q/p8NIjJURN72VUEc\nBn7Lkc+jsTzU5neEiAzCXcUWquqSFualD649JVA5zazPr9ceVfv5dwfC623f3L5alBcRuVhEPvP7\nXn2Npr9XAX1Pmklb/7t+vGU6oVlQ6BpewN0hfAOYr6r7/Nb9E5gL9FPVJGAWrjdIc/bgTma1+te+\n8NXF/ht3hZ+uqsm4KqDa/TbXZW03MMBvf+I71q4A8lXfTbjv6VsishfYijvZ11Zr5ACDG9guD9eL\np6F1xbjeMrX58+BOiP7ql/EvwHpgiKomAv+PI59HDq7K4hi+K/VXcH+7m2jhXYLvjucS4NNG8t6z\nocO25Bh+DgBVgH+vsn6NpA1UXV5EJAZXJfc7jnyv/kNg39fjsYe2LdMJzYJC1/AC8FVcHWz92/kE\noEBVy0RkPK46JRCvAHeISF9fffI9fusigSh8JwkRuQB3RVdrH5AmIklN7PsiETnPV81zN1AOLAww\nb/5uwd3uZ/j9XAVc6GvAnQ18VUSuFZFwX0Nphu/u5BngMXEN4R4ROdMX8DYC0eIa6SOAX/jK25QE\n4DDgFZFhwPf81r0N9BKRO0UkSkQSRGSC3/oXcG0mlxJgUPCVZTiuOrAn8Jhv1UpgpIhk+KoU7wtk\nf4HwVc+9BtwnIrG+crZlb68o3HfrAFDtq+s/rw3335hXgG+LyCkiEgt0+jEbHcmCQhfgq8NeCMTh\n7gr8fR/4tYgUAffi/gEC8Tdco+1K4HPcyaD2eEXAHb59HcQFmrl+69fjTlZbxfXG6V0vvxtwV8ZP\n4q7YLwEuUdWKAPMGgIicgbvjmOmrK679mQtsBr7u6/p4IS7wFOAamcf6dvFjYDWw1Lfu90CYqhbi\nPrencXcvxbhG0Kb82Pc5FOE+u5f9yluEqxq6BFeFsQlX5VW7/r+4Bu7PVfWoaroGXCciXqAQ95nn\nA6fVNuar6kbg17iG7U003JB8PGbgGqH34gLYS7iAftxU9RCusf513N/jalxADSpVfQt3p/cJ7jP7\nr29Vm5TrRGOD14xpByLyIfBPVe1So75F5PdAT1U93l5InYaIjMZdCEX57iiNH7tTMCbIROR0YBx+\ndxedlYgME5Ex4ozHdVl9vaPzdbxE5AoRiRSRVOBBXA8tCwgNCFpQEJFnxA2O+bKR9SIiT4jIZnGD\nmMYFKy/GdBQReR5X1XOnr5qps0vAVSUW44LYo7geVF3dD3BVmZtxHRB+0LHZ6byCVn0kIl/B9X9+\nQVVHNbD+QtyAkguBCcDjqjqhfjpjjDHtJ2h3Cqr6CU33rb4MFzBUVRcDydLK+V2MMca0jfac6Ku+\nPhw9iCTXt+yY2SBFZDowHSAmJua0fv1a1824pqaGsLDQa0YJxXKHYpkhNMsdimWGlpd748aNeapa\nfzzOMToyKARMVZ8CngLIzMzUZcuWtWo/2dnZZGVltWHOuoZQLHcolhlCs9yhWGZoeblFpLnu0EDH\n9j7axdEjC/vSuhGvxhhj2khHBoW5wM2+Xkhn4OaE6VQPEjHGmFATtOojEXkJyAK6iZu7/ldABICq\nzsLNpXMhrotYCW56ZmOMMR0oaEFBVb/ezHrF+gobY0ynEnpN9sYYYxplQcEYY0wdCwrGGGPqWFAw\nxhhTx4KCMcaYOhYUjDHG1LGgYIwxpo4FBWOMMXUsKBhjjKljQcEYY0wdCwrGGGPqWFAwxhhTx4KC\nMcaYOkENCiIyVUQ2iMhmEbmngfUpIvK6iKwSkSUiMiqY+THGGNO0oAUFEfEAM4ELgBHA10VkRL1k\n/w9YoapjgJuBx4OVH2OMMc0L5p3CeGCzqm5V1QpgDnBZvTQjgA8BVHU9MFBE0oOYJ2OMMU0I2kN2\ngD5Ajt/7XGBCvTQrgSuBT0VkPDAA96zmff6JRGQ6MB0gPT2d7OzsVmXI6/W2etuuLBTLHYplhtAs\ndyiWGYJX7mAGhUA8CDwuIiuA1cAXQHX9RKr6FPAUQGZmpmZlZbXqYNnZ2bR2264sFMsdimWG0Cx3\nKJYZglfuYAaFXUA/v/d9fcvqqOphfM9mFhEBtgFbg5gnY4wxTQhmm8JSYIiIDBKRSOB6YK5/AhFJ\n9q0DuBX4xBcojDHGdICg3SmoapWIzADmAx7gGVVdIyK3+dbPAoYDz4uIAmuAbwcrP8YYY5oX1DYF\nVZ0HzKu3bJbf60XA0GDmwRhjTOBsRLMxxpg6FhSMMcbU6eguqcYYc+KrLIXSg1DuBU84eKIgPAoQ\ntz7MAzHJR9Krwq7PYdXLIGGQ1AcS+0DPMdDt5KBm1YKCMebEpQr718HORTBwEnRvoAmzohj2fgl7\nV7mTd3gUeCIhIgYiYiEyFhSoLIaKEigvcif40oNQkgdFe91PWaHfcWtAq6GmGqrKobq8+bwm9oF+\n46H7MFj/jstPeIwLGBVel+asO2HK/W3y0TTGgoIxpuPV1MDOhbByjjvZDjgLBk1yJ8oDG2D/Wji8\nG2qq3E+YB+J6QEJPkg/ugX3dISYFwqOhYBvkbXQn1Q3vwsFtR45z0mTI/Ka7Ys/5DHKXwoH17iTe\nUpEJEJsKCb0gfaTvSt935S8CYeEgHvBEuLzFpEBUAlRXuiBRVXFkX1VlsGcF5CyBNa9Dj5Fw0aMw\n5jqIjHcB5/Aut32QWVAwpqupqQYEwppoEqyqcCcmT0Tj6/M2uKveHsPdCaspqlBSAIW+mWvCwt2J\ntDAH8rfAoR1QWXbk6jgsHMIjXTVJdQVUlrgfVXdCDwt31SK1+85ZAoU73Qkwrhusf/vYPIhvu7Bw\nqKl0+wUywE2YU58nEgZ9Bc66A/qf6fa59Bl45Wa3PjoJ+o6H4ZdCr7HuJzrJXdlXlbmfimKXb8Td\nMUTEuhNzTErjn+3xKj3k8iFyZFlM8tHVS0FkQcGY9lBSAAVbIbk/xHU/+h++VnUVFO12aUsPuhN2\nUh9IG+JORDsXwRf/gDVvuBNVVAJEJUJCT7fflAGcsnk1rP+lqzIJ87gTXZ/T3BVt0T7w7nVX0gfW\nuyvuWol9odsQiE1zacOjoOQgFB/wbbMdyguPzXOt6GSIjHPHFI/bd1W5+/FE+E6ocS4Q1F7to0e2\n7z4UzrsXhl3k0hbmwrZP3fG7D3OBK6nvkc9NFcoOQdFeVvz3PTKG9nefWWUJpAyEbkPdb/8Td4/h\ncNZdsOO/EJ/u0jQUWKPiA/+7BkM7nfwbY0HBGH+lB2HzB0fqd8M8R6+vqYHyw1BaAHmbYNdy91O0\n90iaiFhIPcn9aLXb367l1J0EI+MhqZ+rsw6PdssKc131gB4z9ZcTleiOGxkPo66AhN7ufdlht93u\nL2DdXLqFxcCA02HiDHc3sGs5LHvGXfVGJx8JIEOmQPood0W6bw3s+9Jd8R/c7ju5lroAEdcN4nu4\nK+rUk9y2tSd21J2oU09q/k6jpZL6QsbXG18vUlclcyhlH4zMCmy/nnA46Zw2yeKJyoKCOfHVVLsT\nXfEBv598d2IP87gr2DCPO3lv+dBVTQDEdoOhU91Vc/4mFwS8+46uf5Yw6DECkgccuYotK4TtC2DV\nHEDclXrWPdBztDv5F2x1v6vK3JW01kD/MyBlgAsWcd3cCS8yzqXL2+hO1v3OgBGXuuUNlrOG/378\nMVmTJx+9vLrSncQjYhrebsiU4/l0zQnGgoLpWKqu3rb4ABTnuVvn1MHH3tbXVLvb/jWvu+qPlIHu\nCjUixjUo7l7hTpzqrsbPrq6EBb7tak/yzUnsCxO+CyMuc3Xl6+fBurfcum5D4KQsdwcRm+pO2sn9\noVdG49UNlaWu3js6qeWfS61eY4GLAksbFtZwtZQnInj13+aEY0HBtK2aGlfXW3zA1Y3HpLh68agE\n8B44Ut2St9FdMRdsg4qio/cRnQS9x0Fi7yMNfXtWuqv0iFhXF7xnpbvSB1ct0jvDNSaGua/0ntwc\n+g0Y5GuYjPBVhaS5q//4Hq5ePybFBY3KYtdIGp9+JBj1Gw+jrnLlEWn4ZNuciJjGr86N6aQsKJjm\nVVe6OvNDO1wD5v517oReWerrWlfuGkXLD7vfDXXvi4w/0tdawiBlkLvS73+mCxpx3d0J27vPFziW\nueqa2h4f/c+AEZfD0POPVJ+UHnRBI7HPMSftLdnZ9Atkrvkwj+sl09i5u6kePsacgCwoGKe2t8f2\nT12/8NpueRXeY+vRo5IgbbA7OUcluDr32p4wUQmuTjyuu6sKKjkIh3NdUEnqC30yodeYxuvFAcbd\nFFiea/t+G2PaTFCDgohMBR7HTZ39tKo+WG99EvAPoL8vL4+o6rPBzFPI2b6AHvuyYWe0awwtKzxS\nhZO/2Z3wi/YcGY0Zk+KG0sf3cP28I+NdNU5SH9cI2mO4G6zTmuoUY0ynF7SgICIeYCYwBfd85qUi\nMldV1/ol+wGwVlUvEZHuwAYRma2qFQ3s0jSl9JC7Sq/tQllRDP/3M/j8eUYArPvD0ekjE6DHMNeA\nOnCSq8oZeLbrpmhVJsaErGDeKYwHNqvqVgARmQNcBvgHBQUSfI/ijAcKgKr6OzL1lB6Egztcvf7O\nxbDtEziwzjW4Dj7X1dN/NsutP+tOllSczPihPV3vnMg410UybYid/I0xxxBVbT5Va3YscjUwVVVv\n9b2/CZigqjP80iTgHtE5DEgArlPVdxrY13RgOkB6evppc+bMaVWevF4v8fEdPFqxhaSmkqTCdSQV\nriPx8HoSD28ioupIb53qsCgKk4ZTmDSC6LK9pBZ8QVTFQcqiurF+2J0cShndJct9vEKxzBCa5Q7F\nMkPLyz158uTlqprZXLqObmg+H1gBnAsMBt4TkU/rP6dZVZ8CngLIzMzUrEB6lTQgOzub1m7brmpq\nYNN8WPsmbJjnq+8XN0hqzJW+IfwDILk/nu7DSQ2PJLV2W1XI20R0Ym8yfP3nu0y521AolhlCs9yh\nWGYIXrmDGRR2Af383vf1LfP3TeBBdbcrm0VkG+6uYUkQ89W55W2CN2dAzmLXX/+Ui2D4JTDwrMAG\nQYk0PD2wMcYEIJhBYSkwREQG4YLB9cAN9dLsBM4DPhWRdOAUYGsQ89S5HN4DuUvc4KrwSDd/zccP\nuwFPl82E0de65cYY006CFhRUtUpEZgDzcV1Sn1HVNSJym2/9LOB/gedEZDVuIvL/UdW8YOWpw1VV\nuMnLcpfCypdga/axA71GXAYXPuK6hBpjTDsLapuCqs4D5tVbNsvv9W7ga8HMQ4fL2wQL/gCb3wfv\nfupmykzqD5PuhlMucCN8qyrc6N2eozs0u8aY0NbRDc0nrt1fwII/usbi8Gg3u2XqSW5Khm5Doe/p\n1iXUGNPpWFBoS1UVLggsecq1FUQmwNl3wRnfh/juHZ07Y4xplgWFtlJ6CF683N0hpJ4EUx+EjBuO\nb9pkY4xpZxYU2kK5F2ZfA3u/hKv+DiOvtKohY0yXZEHheFWWwkvXu6mer3nO9R4yxpguyi5nj0fZ\nYZhzg3v04uWzLCAYY7o8u1NorUM58M/r4MB6uPRJGHtdR+fIGGOOmwWF1shd7qqMqsrhG6+6mUmN\nMeYEYEGhpXYshH9c7Z4udstb7pkExhhzgrCg0BI7P3O9jBJ7w7R3ICG9o3NkjDFtyhqaA5W7HP5x\nFcSnuzsECwjGmBOQBYVAFObC7KsgLs0FhMReHZ0jY4wJiqAGBRGZKiIbRGSziNzTwPqfiMgK38+X\nIlItIqkN7avD1FTDa9+F6kr4xmvuAfbGGHOCClpQEBEPMBO4ABgBfF1ERvinUdWHVTVDVTOAnwEf\nq2pBsPLUKgsegx0L3HTWaYM7OjfGGBNUwbxTGA9sVtWtqloBzAGaGt31deClIOan5XKWwEe/g1FX\nw9jrOzo3xhgTdMEMCn2AHL/3ub5lxxCRWGAq8O8g5qdlqirg37e66qKLH3OPuTTGmBNcZ+mSegnw\n38aqjkRkOjAdID09nezs7FYdxOv1BrxtWt5njD60g9Wj/h/5i79o1fE6i5aU+0QRimWG0Cx3KJYZ\nglfuYAaFXUA/v/d9fcsacj1NVB2p6lPAUwCZmZmalZXVqgxlZ2cT8LavPAOx3Rh9xY/AE9Gq43UW\nLSr3CSIUywyhWe5QLDMEr9zBrD5aCgwRkUEiEok78c+tn0hEkoBzgDeDmJeWKT0IG96F0Vd3+YBg\njDEtEbQ7BVWtEpEZwHzAAzyjqmtE5Dbf+tpnNV8B/EdVi4OVlxZb8wZUV8AYm+TOGBNagtqmoKrz\ngHn1ls2q9/454Llg5qPFVr0M3U6B3qd2dE6MMaZd2Yjm+gq2wc5Fbips63FkjAkxFhTqW/WK+z36\n2o7NhzHGdAALCv5UYdUcGDgJkvs1n94YY04wFhT85W+Ggq0w6qqOzokxxnQICwr+9qx0v/ue3rH5\nMMaYDmJBwd+eFeCJgu6ndHROjDGmQ1hQ8LdnFfQYbgPWjDEhy4JCLVXYuwp6je3onBhjTIexoFCr\nMMdNb9FrTEfnxBhjOowFhVp7VrnfPe1OwRgTuiwo1NqzEiQM0kd2dE6MMabDWFCotXcVdBsKkbEd\nnRNjjOkwFhRq7VkFPa09wRgT2oIaFERkqohsEJHNInJPI2myRGSFiKwRkY+DmZ9GeQ9A0W7reWSM\nCXlBmzpbRDzATGAK7vnMS0Vkrqqu9UuTDPwZmKqqO0WkR7Dy06S9vpHM1vPIGBPignmnMB7YrKpb\nVbUCmANcVi/NDcBrqroTQFX3BzE/javreTS6Qw5vjDGdRTAfstMHyPF7nwtMqJdmKBAhItlAAvC4\nqr5Qf0ciMh2YDpCent7qh1U39qDrEWveJyE6nc8+W9mq/XZ2ofhg81AsM4RmuUOxzBC8cgf1yWsB\nHv804DwgBlgkIotVdaN/IlV9CngKIDMzU1v7sOpGH3S96i4YNP6Effh3KD7YPBTLDKFZ7lAsMwSv\n3M1WH4nI7SKS0op97wL8H0rQ17fMXy4wX1WLVTUP+ARo39bessNuumwbtGaMMQG1KaTjGolf8fUm\nCvQZlUuBISIySEQigeuBufXSvAmcLSLhIhKLq15aF2jm28SBDe63DVozxpjmg4Kq/gIYAvwdmAZs\nEpHfisjgZrarAmYA83En+ldUdY2I3CYit/nSrAP+D1gFLAGeVtUvj6M8LXdoh/udMrBdD2uMMZ1R\nQG0KqqoishfYC1QBKcCrIvKeqv60ie3mAfPqLZtV7/3DwMMtzXibKfS1hdvjN40xpvmgICI/BG4G\n8oCngZ+oaqWIhAGbgEaDQpdwaCfEpEJUQkfnxBhjOlwgdwqpwJWqusN/oarWiMjFwclWOzq00+4S\njDHGJ5CG5neBgto3IpIoIhOgrk2gazu0E5L7d3QujDGmUwgkKPwF8Pq99/qWdX2qcCgHkgd0dE6M\nMaZTCCQoiKpq7RtVraHjB721jeI8qCq1OwVjjPEJJChsFZE7RCTC9/NDYGuwM9YuDu10vy0oGGMM\nEFhQuA2YiBuNXDt/0fRgZqrd1I5RSLKGZmOMgQCqgXwzl17fDnlpf3V3ChYUjDEGAhunEA18GxgJ\nRNcuV9VvBTFf7aMwB6KTITqpo3NijDGdQiDVRy8CPYHzgY9xE9sVBTNT7ca6oxpjzFECCQonq+ov\ngWJVfR64iGOfi9A1WVAwxpijBBIUKn2/D4nIKCAJ6JjHZrYlVQsKxhhTTyDjDZ7yPU/hF7ipr+OB\nXwY1V+2hJB8qSywoGGOMnybvFHyT3h1W1YOq+omqnqSqPVT1r4Hs3Pf8hQ0isllE7mlgfZaIFIrI\nCt/Pva0sR8vZGAVjjDlGk3cKvknvfgq80tIdi4gHmAlMwY1vWCoic1V1bb2kn6pq+0+sZ0HBGGOO\nEUibwvsi8mMR6SciqbU/AWw3HtisqltVtQKYA1x2XLltS7VBwQauGWNMHfGb1qjhBCLbGlisqnpS\nM9tdDUxV1Vt9728CJqjqDL80WcBruDuJXcCPVXVNA/uajm8UdXp6+mlz5sxpMs+N8Xq9xMfHAzBk\n419J3/cxCyb9s1X76kr8yx0qQrHMEJrlDsUyQ8vLPXny5OWqmtlcukBGNA8K+Kgt9znQX1W9InIh\n8Abu0Z/18/AU8BRAZmamZmVltepg2dnZ1G27+y9QfRKt3VdXclS5Q0QolhlCs9yhWGYIXrkDGdF8\nc0PLVfWFZjbdBfjXzfT1LfPfx2G/1/NE5M8i0k1V85rL13E7tBNSghnvjDGm6wmkS+rpfq+jgfNw\nV/jNBYWlwBARGYQLBtcDN/gnEJGewD7fM6DH49o48gPMe+vVjlEYdE7QD2WMMV1JINVHt/u/F5Fk\nXKNxc9tVicgMYD7gAZ5R1TUicptv/SzgauB7IlIFlALXa3ONHG2h9CBUeK3nkTHG1NOah+UUAwHV\nu6jqPGBevWWz/F7/CfhTK/JwfGx2VGOMaVAgbQpvAbVX72HACFoxbqFTKfE1WcR1/dk6jDGmLQVy\np/CI3+sqYIeq5gYpP+2jstT9jozt2HwYY0wnE0hQ2AnsUdUyABGJEZGBqro9qDkLptqgEGFBwRhj\n/AUyovlfQI3f+2rfsq6rssT9jojp2HwYY0wnE0hQCPdNUwGA73Vk8LLUDiosKBhjTEMCCQoHROTS\n2jcichkQ/MFlwVR3p2DVR8YY4y+QNoXbgNkiUtt1NBdocJRzl1FZCuIBT9e+4THGmLYWyOC1LcAZ\nIhLve+8Neq6CrbLU3SWIdHROjDGmU2m2+khEfisiyarq9U1clyIiD7RH5oKmssTaE4wxpgGBtClc\noKqHat+o6kHgwuBlqR1YUDDGmAYFEhQ8IhJV+0ZEYoCoJtJ3fpUl1shsjDENCKSheTbwgYg8Cwgw\nDXg+mJkKuspSG81sjDENCKSh+fcishL4Km4OpPnAgGBnLKhqG5qNMcYcJZDqI4B9uIBwDXAusC6Q\njURkqohsEJHNInJPE+lOF5Eq3yM8g8/aFIwxpkGN3imIyFDg676fPOBl3DOdJweyYxHxADOBKbix\nDUtFZK6qrm0g3e+B/7SqBK1RUQLJFhSMMaa+pu4U1uPuCi5W1bNV9UncvEeBGg9sVtWtvqkx5gCX\nNZDuduDfwP4W7Pv4WPWRMcY0qKk2hStxj9D8SET+D3dSb8lorz5Ajt/7XGCCfwIR6QNcAUzm6Md+\nUi/ddGCfN4TJAAAgAElEQVQ6QHp6OtnZ2S3IxhFer5fs7GwmlhRy4MAhNrVyP11NbblDSSiWGUKz\n3KFYZgheuRsNCqr6BvCGiMThrvDvBHqIyF+A11W1Lap7/gj8j6rWSBOji1X1KeApgMzMTM3KymrV\nwbKzs8nKyoL/VtFnwGD6tHI/XU1duUNIKJYZQrPcoVhmCF65A+l9VAz8E/iniKTgGpv/h+bbAHYB\n/s+77Otb5i8TmOMLCN2AC0WkyheQgkPVxikYY0wjWvSMZt9o5rqr9mYsBYaIyCBcMLgeuKHe/uqe\n9SwizwFvBzUgAFSVA2q9j4wxpgEtCgotoapVIjIDN67BAzyjqmtE5Dbf+lnBOnaTbNpsY4xpVNCC\nAoCqzgPm1VvWYDBQ1WnBzEud2qBgI5qNMeYYgQ5eO3HY85mNMaZRIRgU7FGcxhjTmBAMCrV3ChYU\njDGmvtALChXF7rdVHxljzDFCLyhYm4IxxjTKgoIxxpg6IRgUrKHZGGMaE4JBwRqajTGmMSEYFGxE\nszHGNCZEg4JAeFRH58QYYzqdEAwKpRAZB01M1W2MMaEqBIOCPZ/ZGGMaE9SgICJTRWSDiGwWkXsa\nWH+ZiKwSkRUiskxEzg5mfgDfozgtKBhjTEOCNkuqiHiAmcAU3KM4l4rIXFVd65fsA2CuqqqIjAFe\nAYYFK0+APWDHGGOaEMw7hfHAZlXdqqoVuGc8X+afQFW9qqq+t3GAEmwVVn1kjDGNCWZQ6APk+L3P\n9S07iohcISLrgXeAbwUxP05lKUTEBf0wxhjTFQX1ITuBUNXXgddF5CvA/wJfrZ9GRKYD0wHS09PJ\nzs5u1bG8Xi+HC/ZRGZHI6lbuoyvyer2t/sy6qlAsM4RmuUOxzBC8cgczKOwC+vm97+tb1iBV/URE\nThKRbqqaV29d3XOhMzMzNSsrq1UZys7OJjE6HLr1obX76Iqys7NDqrwQmmWG0Cx3KJYZglfuYFYf\nLQWGiMggEYkErgfm+icQkZNF3IABERkHRAH5QcyTNTQbY0wTgnanoKpVIjIDmA94gGdUdY2I3OZb\nPwu4CrhZRCqBUuA6v4bn4LAuqcYY06igtimo6jxgXr1ls/xe/x74fTDzcIzKEjei2RhjzDFCa0Sz\nqo1oNsaYJoRUUBCtAq2xoGCMMY0IqaDgqS53L6yh2RhjGhRSQSGspjYo2J2CMcY0JKSCgqe6zL2w\nEc3GGNOgEAsKdqdgjDFNCamgYNVHxhjTtJAKCtbQbIwxTevwCfHaUzDvFA6VVPDioh0s33mQ/YfL\n2V9URnlVDcmxESTHRNIjIYoh6Qmc0jOezAGp9Eu1wGSM6XxCKijU3Sm04YjmA0XlPL1gK/9YtIPi\nimqG90qkd1I0Y/slEekJo7C0ksLSSnIPlvLJpgNUViuRnjCe/ebpnHVytzbLhzHGtIWQCgpteaeQ\n7y3nr59s5YVF26moquGiMb35ftZghvdKbHSbyuoath4o5o6XvmD6C8t4afoZjOmbfNx5McaYthJS\nQaEt2hRUlT9nb2HmR5spq6zm8ow+zDj3ZE7qHt/sthGeME7pmcAL3x7PVX9ZyLRnl/Kv285kcADb\nGmNCm7e8ijCB2MjgnrZDqqH5eO8UVJX731rLw/M3MGlIN/5z11d47LqMgAKCv/TEaF789gTCBK5/\najEzP9rM3sKyVuXJGNN+DhSVs3b3Yaqqa45aXlJRxdYDXr7cVciSbQUs215Avrec2kmfC4or+GDd\nPl5cvIPCksoWHbOiqobnF24n6+GP+OvHW9usLI0JasgRkanA47ips59W1Qfrrb8R+B9AgCLge6q6\nMlj5qbtTCI9u8baqyq/mruGFRTu49exB/Pyi4fgeBdEqg7rF8cK3JnDfW2t4eP4GHv3PBs4d1oP/\nvXwUvZKsy6wxbaWquoaN+7xER4SRFh9FYnQ4qlBWVU1FVQ1JMRHH/C+vzDlEcUUVmQNSiQwPo7i8\nilkfb+GpT7ZSXlVDdEQYo/skkRQTwcZ9XnIOltDQpP9JMREkxoSTU1Bat+zR/2zg9nOHcNMZAyit\nrGb5jgLW7SliTN8kJgxKIzLcXasXFFfw4fr9PPHBJnYWlDBhUCqTh/UI6mcFQQwKIuIBZgJTcM9n\nXioic1V1rV+ybcA5qnpQRC7APV1tQrDyFFZT7qqOWngy9w8I3/3KSdxzwbDjCgi1RvRO5JXvnsmO\n/GJeXZ7Ls//dziVPLuAv3ziN0wemHvf+jQklCzbl8dzCbSRGR9ArOZqE6AiW7zjI4i35FJVX1aXz\nhAnVNUfO4JOGdOP3V42hd3IM1TXKY+9tYOZHWwCIi/Rw5uA0VuUWsr+onEvG9ubcYd1ZnXuYFTkH\n2VlQwug+SVw1ri/902KIjQwnNtJDVY2y7UAxWw54OVhSwdfH9+e0/ilERXh4ZP4G/vfttTzxwSYO\nl1UeFUwSosOZODiNHfklrN9bBMCwngk8+83TyRravU3OO80J5p3CeGCzqm4FEJE5wGVAXVBQ1YV+\n6RfjHtkZNJ7q8la1Jzy/cDsvLNrB9DYMCP4GpMVx99dO4dKxvZn+4nJu+Nti7rt0JDdOGNCmxzGm\nMyitqCbnYAnpidEkxUQEtE1haSVFZZX0SY455v+vrEr55Rtf8uLiHaQnRuERYV9ROdU1Sr/UGC4e\n25sJg1JRlHxvBQXFFYR7woiN9FBSUc3Tn27l/D98wk8vGMb8L/eyYHMe12X247zhPfh44wE+3ZTH\ngLRY/vKN0zhtQAoAV5zafJ4nn9Lw8he/PZ5PNuXx7+W5nNwjntMHpjKsZwLLdhzkvbV7Wbgln4Fp\ncfzk/N6ccVIap/ZLJiws+MGglgTrQWcicjUwVVVv9b2/CZigqjMaSf9jYFht+nrrpgPTAdLT00+b\nM2dOq/I0ePUjdPduYPGZfwt4mw0F1Ty0tIwx3T3cfmoUYUGO1MWVyl9XlrMqr5orTo7gspMjj3uf\nXq+X+PjQaswOxTJD25RbValWCPc7Eakqu7zKlsJq+saHMSAx7Kj1tSprlNJKKKpUDpcrhyuUvNIa\n9pUo+0tq2F+iFJS5c060B6YMjGDqwAjiIoTSKmXTwWr2lSjFlYq3QskvU3YeriHft018BJyU5KFX\nvFBVA+XVsD6/kvwy4WsDw7lqSCSRHncnUFoF8ZHN/7/uL6nh76vL2XCwhvAwuGlEJOf0DSxYdaSW\n/q0nT568XFUzm0vXKYKCiEwG/gycrapNPqM5MzNTly1b1qo87Z95IT00D2YsCSj9nsJSLnlyAYnR\nEbwx4ywSo9vni1Jdo/z01VX8+/Nc7p4ylNvPG3Jc+wvFB5ufKGUuLK1k1sdb+OdnOzn75G788uIR\n9ExqvE2sNeWuqq5h7srdzFu9l9yDJeQUlFBSWc2gtDiG90okNS6SjzceYGdBSd02MREeRvdJolqV\nQyUVFJZWcrisioqqmgaP0S0+kv6psQzsFsfAtDj6pcbw/tr9vLN6DwnR4fRPjWXdnsP41eqQGB1O\nemI0w3olMqJXIgnR4azOLWRl7iF25JcQHRFGTISHaCr43XXjmXBSWovK7a+mRnlz5S5OSU9kRO/G\nu5V3Ji39W4tIQEEhmNVHu4B+fu/7+pYdRUTGAE8DFzQXEI6Xp7ocogJrxC2rrOa2f3xOaUU1L33n\njHYLCODqPB+6egyK8uh7GxGBH0w+uV3qE03wVNcoB4rK2VNYSlWNkjkgpdG/aZ63nH8vz+XP2Vs4\nXFbJV4Z05/11+8jesJ87zhtCj8QoVuYUsnpXIbGRHoamJzA0PZ6KohpqarSuuiHfW857a/cddUKP\niwpnQFosA9Pi2HLAy+MfbGLrgWIGpMUypEcCZw5OIz4qnI37ili16xD7DpczcXAat50zmPGDUti4\nz8uSbQWs3lVIdEQYw3omkuhrUE2ICic+KpzU+Ci6xUWSGh9Jn+QYEhr4/7ni1L7M2HOYP320mYPF\nFcw4dwgTBqUyvFciSTEReAKsMsnOzj6ugAAQFiZccWpQa6+7jGAGhaXAEBEZhAsG1wM3+CcQkf7A\na8BNqroxiHkBahuaE5pNV1Vdw+0vfcGq3EP85cbTGJLe/DZtzRMmPHz1WFB45D8beWlJDucO68G5\nw3vwlSHdA/6HMe3DW17FypxDLN9xkILiirqTrggs3lrAoi15rNl9mCq/S+GMfsn8/KLhnD4wFVUl\n92ApCzbn8c6qPSzckkeNQtYp3fnp+cMY0TuRnIISfjV3Db97dz0AsZEeRvVO4lBJJbM/20FZpbtK\n/8OK9znjpFQOFlfy2bZ8anxVQbXxp7L66NqBU9ITmPWNcXxtRM8G665V9ajgdXKPBC4c3atNPrfh\nvRKZecO4NtmXaRtBCwqqWiUiM4D5uC6pz6jqGhG5zbd+FnAvkAb82felqwrk9qa1PNVlEJneXL65\nd+4a3lu7j/suGcHUUT2DlZ1mecKEh68Zy5mD03hv7T5eXZ7Li4t3MLJ3Ir++bFRdo5dpueLyKv61\nLIf0xGgmnJRGalzjbTf7i8p4eUkOLy/LoapaOW1ACuMGpOARWL3rMGt2F7JxXxE16jq2xUS4Bsxa\n4WFCRr9kvj1pEH1TYumdFM3+onL++P5Grpm1iMwBKeQeLGXvYTdWZWBaLN/POpmLx/ZiWM8jVRn9\nUmP5+y2ZrMg5REykhyE9EuouDqprlJyCEv4xfyEFEd35bGsBsZEefjD5ZKaO6smIXol1J/aSiip2\n5JewI7+YyPAwsob2aLIh0+5QQ0tQxymo6jxgXr1ls/xe3woc07AcLGE1Fc0OXPvTh5v552c7ue2c\nwUw7a1A75axxnjDhmsx+XJPZj7LKauav2cvv5q3nqr8s5MpxfRjXP4XqGqW6RkmMiSA9MYoeCdF0\nT4giOSaiXXsttMaBonJqVOkeH9VoXgtLKymtqCY5NoLoCM8x62unD8kpKKH2GvjzPVWs+mATWw54\nyfdWcOW4Plw6tjfhnjDW7j7MjJc+Z+uB4rp9DOuZQDdfHjwCijvRllfW8PnOg1TVKGef3I3UuEiW\n7zjIO6v3AK6ufFSfJL42Ip3TBqaS0S+ZxOhw8rwV7MgvpqKqhoz+yQ2OQr08ow9/X7CVt1bu4fRB\nqYwfmML4QWkMTY9v9EQsIpza/9iLAU+YMLBbHGf3iSArK6PJzzw2MpzhvRKbnJLFhK6gNTQHy/E0\nNJc+eAoxQ8+BK59qcP3S7QVcM2sRV57ah0evHdtpr5CKy6uY+dFm/vbp1mOqAvyFCaTGRXJyQjUP\n3/SVo2ZmVVUOeMvZtM/Lxn1F7gp4YAqj+yQR4Tn+ge6qSnlVDVHhYUd9juVV1eQUlJC94QDzVu/h\n852HAIj0hNEnJYakmAjCwwRPmHC4rIrcgyUUlR3pYx4VHkZiTAQJ0a7+urJa2bzfS0X1sQ2cItAn\nOYbwMGF7fgkD02KZMiKd5xftICU2gkevySAm0sPirfks2VaAt7yqLsCGiatnrr3Kv2HCAAZ1OzKR\n4r7DZahCemJUu39PKisryc3Npazs2FHwZWVlREe3fHBmVxaKZYbGyx0dHU3fvn2JiDi6HSfQhuaQ\nCgrlvx1I1OjL4JLHj1lXU6NcOnMB+d4KPrw7i5jIY69IO5uiskpKK6sJDwsjTNwV9T7ftN15ReXk\nF1ewp7CMuV/kgoRx85kDGNMvmQWbDrBgUx67G5haIzoijEHd4imvqqa0opq4qHBuOmMA12b2IybS\nw77DZTy3cDuLt+ZzbWY/rjmtL+GeMKprlDdX7OL5hdvZe7iMgyWVVFTVEOERUuMiSYmN5GBJBfuL\nyusG64zolcgFo3qSHBdJbkEJOb4AUKNKVbUSG+mhX2os/VJiiYsKp7C0kkOlFRSWVFJUXkVRWRWC\nu8of1iuBQd3i67pJrvh8OVedfw4xkR5qapT31u3jiQ82sWb3YSaf0p1HrhlLWnxUO/612s62bdtI\nSEggLS3tmIBUVFREQkL7t4F1pFAsMzRcblUlPz+foqIiBg06uqajM/Q+6nSaGrz26vJcvtx1mMev\nz+gSAQEgITriqF4dybGRDEg7dlrwsxLyWViUxt//uw1V19XvrJO7ceukVE7pmcCQdNfXedn2gyzZ\nVkBOQQnRkR5iIjxsPeDlV3PX8PgHmzh9YAofrt9PdY0yMC2On722mr99upXrT+/Hv5blsmm/l2E9\nE8ga2oPkuAgSoyPwlleR7y2noLiCkb2T6JcaQ9+UWDIHpDCwW/CelZ23Kazu7xgWJpw/sidfG5HO\n5v1eBneP7/TVak0pKytj4MCBnfZO1nQcESEtLY0DBw60eh8hFRTqprmop6iskofmb2Bc/2QuHdu7\nA3IWXCnRYTw8dSzfyxpMUVkVo/okNdh76cLRvRrsVbJ0ewGzsrfw2bYCbpwwgG+dNYh+qTG8t3Yf\nD83fwG/nrWdw9zj+fOM4po5suAdLZyAiHdKTLBgsIJjGHO93I3SCQlUFYVrdYEPznz7aTJ63nL/f\nknlC/7O1dDbXWqcPTOX0acfOxfS1kT05d1gPNu7zMjQ9nvA2aIswxnSs0PkvrvQN3ql3p7B292Ge\nXbCdK8f1YWw/e+BNS4V7whjRO9ECQoi46667+OMf/1j3/vzzz+fWW490ILz77rt57LHH2L17N1df\nfTUAK1asYN68I50Q77vvPh555JE2yc9zzz3Hnj17Glw3bdo0Bg0aREZGBsOGDeP+++8PaH+7d+9u\nNs2MGQ3O1nOUrKwsMjOPVOEvW7asS4yyD53/5Erf1LV+dwoHisr5zgvLSImL4J4LhnVQxozpOs46\n6ywWLnTzWNbU1JCXl8eaNWvq1i9cuJCJEyfSu3dvXn31VeDYoNCWmgoKAA8//DArVqxgxYoVPP/8\n82zbtq3Z/TUXFFpi//79vPvuu63atqqqqvlEQRA61Uf17hTKq6q57R/LyS8u51/fnUiPhNDr0ma6\nvvvfWsPa3Yfr3ldXV+PxHF9HiRG9E/nVJSMbXDdx4kTuuusuANasWcOoUaPYs2cPBw8eJDY2lnXr\n1jFu3Di2b9/OxRdfzOeff869995LaWkpCxYs4Gc/+xkAa9euJSsri507d3LnnXdyxx13APDYY4/x\nzDPPAHDrrbdy55131u3ryy+/BOCRRx7B6/UyatQoli1bxq233kpcXByLFi0iJqbhcUi13Xfj4lzn\nhl//+te89dZblJaWMnHiRP7617/y73//m2XLlnHjjTcSExPDokWL+PLLL/nhD39IcXExUVFRfPDB\nBwDs3r2bqVOnsmXLFq644goeeuihBo/7k5/8hN/85jdccMEFx+Tne9/7HsuWLSM8PJzHHnuMyZMn\n89xzz/Haa6/h9Xqprq7m/vvv51e/+hXJycmsXr2aa6+9ltGjR/P4449TXFzM3LlzGTx4cGB/2ACF\n3p1CZCyqys9eW83yHQd59JoMRvdN6ti8GdNF9O7dm/DwcHbu3MnChQs588wzmTBhAosWLWLZsmWM\nHj2ayMgjo8MjIyP59a9/zXXXXceKFSu47rrrAFi/fj3z589nyZIl3H///VRWVrJ8+XKeffZZPvvs\nMxYvXszf/vY3vvjii0bzcvXVV5OZmcnTTz/NihUrGgwIP/nJT8jIyKBv375cf/319OjhHlIzY8YM\nli5dypdffklpaSlvv/123f5mz57NihUr8Hg8XHfddTz++OOsXLmS999/v+4YK1as4OWXX2b16tW8\n/PLL5OTkNJjHM888k8jISD766KOjls+cORMRYfXq1bz00kvccsstdYHr888/59VXX+Xjjz8GYOXK\nlcyaNYt169bx4osvsnHjRpYsWcLNN9/Mk08+GeifLmAheKcQw8tLc3jt813c9dWhXDSmbeZwMaYj\n1L+ib48++xMnTmThwoUsXLiQH/3oR+zatYuFCxeSlJTEWWedFdA+LrroIqKiooiKiqJHjx7s27eP\nBQsWcMUVV9RdzV955ZV8+umnXHrppa3O68MPP8zVV1+N1+vlvPPOq6ve+uijj3jooYcoKSmhoKCA\nkSNHcskllxy17YYNG+jVqxenn346AImJR0aAn3feeSQluYvJESNGsGPHDvr160dDfvGLX/DAAw/w\n+9//vm7ZggULuP322wEYNmwYAwYMYONGN/3blClTSE090rHj9NNPp1cvd54aPHgwX/va1wAYOXIk\nixYtavVn05gQulNwQeFAuYcH3lnHmSelcfu5J3dwpozpemrbFVavXs2oUaM444wzWLRoUd0JNxBR\nUUcGDno8nibrz8PDw6mpOTJivaGR3M2Jj48nKyuLBQsWUFZWxve//31effVVVq9ezXe+850W77Ml\n+T/33HMpLS1l8eLFAe27Nig2dKywsLC692FhYUFpdwihoOCqj574JJcaVR66ekyn7U9vTGc2ceJE\n3n77bVJTU/F4PKSmpnLo0CEWLVrUYFBISEigqKio2f1OmjSJN954g5KSEoqLi3n99deZNGkS6enp\n7N+/n/z8fMrLy3n77beP2rfX621231VVVXz22WcMHjy4LgB069YNr9db1yBeP6+nnHIKe/bsYenS\npYC7C2vtSfgXv/jFUe0OkyZNYvbs2QBs3LiRnTt3csopjTyqrZ2FUFBwdwoLd5byswuGHTUPkDEm\ncKNHjyYvL48zzjjjqGVJSUl069btmPSTJ09m7dq1ZGRk8PLLLze633HjxjFt2jTGjx/PhAkTuPXW\nWzn11FOJiIjg3nvvZfz48UyZMoVhw470FJw2bRp33nknGRkZlJaWHrPP2jaFMWPGMHr0aK688kqS\nk5P5zne+w6hRozj//PPrqodq93fbbbeRkZFBdXU1L7/8Mrfffjtjx45lypQprbpLAbjwwgvp3r17\n3fvvf//71NTUMHr0aK677jqee+65o+4IOlJQ5z4SkanA47ips59W1QfrrR8GPAuMA36uqs12Xm7t\n3Ee7Coq44tF5DOnflxe/MzGk7hJOlKeQtcSJXOZ169YxfPjwBteF4jxAoVhmaLrcDX1HOnzuIxHx\nADOBKUAusFRE5qrqWr9kBcAdwOXByketNXuKKfXE8+A1p4ZUQDDGmJYIZvXReGCzqm5V1QpgDnCZ\nfwJV3a+qS4HKIOYDcFMyPHJOrFUbGWNME4LZJbUP4N95NxeY0Jodich0YDpAeno62dnZrcpQZWlx\nq7ftyrxeb8iV+0Quc1JSUqMNt9XV1QE16p5IQrHM0HS5y8rKWv397xLjFFT1KeApcG0Kra0rPpHr\nmZsSiuU+kcu8bt26RuuSQ7F+PRTLDE2XOzo6mlNPPbVV+w1m9dEuwH80R1/fMmOMMZ1UMIPCUmCI\niAwSkUjgemBuEI9njDHmOAUtKKhqFTADmA+sA15R1TUicpuI3AYgIj1FJBf4EfALEckVEXuauDGd\nVHtOnT1w4EBGjx5NRkYGo0eP5s0332x2m9/+9rfNppk2bdpRA9YaIyLcfffdde8feeQR7rvvvma3\n6+qCOnhNVeep6lBVHayqv/Etm6Wqs3yv96pqX1VNVNVk3+vDTe/VGNNR2nvq7I8++ogVK1bw6quv\n1s2k2pRAgkKgoqKieO2118jLy2vV9h019fXx6hINzcaYRrx7D+xdXfc2proKPMf5b91zNFzwYIOr\ngj11dmMOHz5MSkpK3fvLL7+cnJwcysrK+O53v8sdd9zBPffcQ2lpKRkZGYwcOZLZs2fzwgsv8Mgj\njyAijBkzhhdffBGATz75hMcee4y9e/fy0EMP1d3V+AsPD2f69On84Q9/4De/+c1R67Zv3863vvUt\n8vLy6N69O88++yz9+/dn2rRpREdH88UXX3DWWWeRmJjItm3b2Lp1Kzt37uQPf/gDixcv5t1336VP\nnz689dZbREREHHPsjhQ601wYY45bMKfObsjkyZMZNWoU55xzDg888EDd8meeeYbly5ezbNkyZs2a\nRX5+Pg8++CAxMTGsWLGC2bNns2bNGh544AE+/PBDVq5cyeOPP163/Z49e1iwYAFvv/0299xzT6Pl\n/cEPfsDs2bMpLCw8avntt9/OLbfcwqpVq7jxxhuPCmq5ubksXLiQxx57DIAtW7bw4YcfMnfuXL7x\njW8wefJkVq9eTUxMDO+8804LPv32YXcKxnRl9a7oS7vw1Nl9+/Y9Jt1HH31Et27d2LJlC+eddx5Z\nWVnEx8fzxBNP8PrrrwOwa9cuNm3aRFpa2lHbfvjhh1xzzTV18zH5T0d9+eWXExYWxogRI9i3b1+j\n+UxMTOTmm2/miSeeOOp5DYsWLeK1114D4KabbuKnP/1p3bprrrnmqAcdXXDBBURERDB69Giqq6uZ\nOnUq4OaL2r59e0CfV3uyoGCMaZH6U2f369ePRx99lMTERL75zW8GtI+WTD0N7jkC6enprF27lpKS\nEt5//30WLVpEbGwskyZNOq6pr5ub/+3OO+9k3LhxAZetsamvw8LCiIiIQETq3nfGdgerPjLGtEiw\nps5uyv79+9m2bRsDBgygsLCQlJQUYmNjWb9+fd3U1gARERF1VVHnnnsu//rXv8jPzwegoKCgVcdO\nTU3l2muv5e9//3vdsokTJzJnzhwAZs+ezaRJk1pbtE7HgoIxpkWCNXV2QyZPnkxGRgaTJ0/mwQcf\nJD09nalTp1JVVcXw4cO55557jpr6evr06YwZM4Ybb7yRkSNH8vOf/5xzzjmHsWPH8qMf/ajVZb77\n7ruP6oX05JNP8uyzz9Y1Xvu3V3R1QZ06OxhaO3U2nNhTHzQlFMt9IpfZps4+WiiWGYI3dbbdKRhj\njKljQcEYY0wdCwrGdEFdrdrXtJ/j/W5YUDCmi4mOjiY/P98CgzmGqpKfn090dHSr92HjFIzpYvr2\n7Utubi4HDhw4Zl1ZWdlxnRC6olAsMzRe7ujo6AYHAgbKgoIxXUxERASDBg1qcF12dnarH67SVYVi\nmSF45Q5q9ZGITBWRDSKyWUSOmWBEnCd861eJyLhg5scYY0zTghYURMQDzAQuAEYAXxeREfWSXQAM\n8bMKaQMAAAe5SURBVP1MB/4SrPwYY4xpXjDvFMYDm1V1q6pWAHOAy+qluQx4QZ3FQLKI9Apinowx\nxjQhmG0KfYAcv/e5wIQA0vQB9vgnEpHpuDsJAK+IbGhlnroBrXtiRtcWiuUOxTJDaJY7FMsMLS/3\ngEASdYmGZlV9CnjqePcjIssCGeZ9ognFcodimSE0yx2KZYbglTuY1Ue7gH5+7/v6lrU0jTHGmHYS\nzKDw/9s79xirriqM/76WQrVQaquSURsHUmpTFbE+Qi1tGhJbS5qm9RVQQxNr1PhIqyYGUkNq4h+g\nTX0mbTXWRKkGBVoJfSBQovGRUmgBAZnCJBiDxYlWWt99ff6x19w5c3tHBpw7lzl3/ZKbu+86e5+7\nvpt7Z81eZ5+1HwFmS5opaTKwCFjf1Gc9sCRWIc0DnrL9RPOJkiRJkvGhbekj289J+hSwETgVuMv2\nXkkfj+N3APcDC4GDwD+B0e1iceL83ymoCUo36u5GzdCdurtRM7RJ94QrnZ0kSZK0j6x9lCRJkjTI\noJAkSZI06JqgcKySGyc7ku6SNCBpT8V2tqRNkg7E88sqx5aF1j5JV1bsb5H02zj2DcUu4pKmSFod\n9ocl9Y6nvlZIOlfSVkn7JO2VdGPY6677dEnbJO0K3V8Me611Q6mEIOkxSRvidTdoPhT+7pS0PWyd\n02279g/Khe5+YBYwGdgFXNhpv45Tw2XARcCeiu3LwNJoLwVWRvvC0DgFmBnaT41j24B5gIAHgKvC\n/gngjmgvAlafBJp7gIuiPQ14PLTVXbeAqdE+DXg4fK+17vDls8APgQ3d8B0PXw4BL2+ydUx3xz+Q\ncfrQLwY2Vl4vA5Z12q8T0NHL8KDQB/REuwfoa6WPsgLs4uizv2JfDNxZ7RPtSZQ7JdVpzU36fwq8\ns5t0Ay8FHqVUA6i1bsp9SluABQwFhVprDl8O8eKg0DHd3ZI+GqmcxkRnhofu6zgCzIj2SHpfHe1m\n+7Axtp8DngLOaY/bx09Med9M+a+59rojjbITGAA22e4G3V8DPg+8ULHVXTOAgc2SdqiU9IEO6p4Q\nZS6SY2Pbkmq5vljSVGAtcJPtpyNVCtRXt+3ngbmSzgLukfSGpuO10i3pamDA9g5Jl7fqUzfNFebb\nPizplcAmSfurB8dbd7fMFOpaTuNPiqqy8TwQ9pH0Ho52s33YGEmTgOnAX9rm+SiRdBolINxte12Y\na697ENtHga3Au6i37kuAayQdolRUXiBpFfXWDIDtw/E8ANxDqTDdMd3dEhRGU3JjIrIeuD7a11Ny\n7oP2RbHqYCZlv4ptMR19WtK8WJmwpGnM4LneCzzkSEJ2ivDxu8DvbN9WOVR33a+IGQKSXkK5jrKf\nGuu2vcz2a2z3Un6fD9n+EDXWDCDpDEnTBtvAFcAeOqm70xdZxvFizkLK6pV+4OZO+3MC/v+IUlL8\nWUq+8AZKXnALcADYDJxd6X9zaO0jViGE/a3xpesHvsXQXe2nAz+hlBzZBsw6CTTPp+RbdwM747Gw\nC3TPAR4L3XuA5WGvte6Kz5czdKG51popKyJ3xWPv4N+mTurOMhdJkiRJg25JHyVJkiSjIINCkiRJ\n0iCDQpIkSdIgg0KSJEnSIINCkiRJ0iCDQjKhkXROVJfcKemIpMOV15NHeY7vSXrdMfp8UtIHx8br\nlud/t6QL2nX+JBktuSQ1qQ2SbgH+bvvWJrso3/UXWg48CYi7d9fYvrfTviTdTc4Ukloi6TyVfRju\nptwU1CPp25K2q+xRsLzS95eS5kqaJOmopBUqexn8JurRIOlLkm6q9F+hsudBn6R3hP0MSWvjfdfE\ne81t4dtXos9uSSslXUq5Ke+rMcPplTRb0sYokvYLSefH2FWSbg/745KuCvsbJT0S43dLmtXuzzip\nJ1kQL6kzFwBLbA9uXLLU9pNR/2WrpDW29zWNmQ783PZSSbcBHwZWtDi3bL9d0jXAckptok8DR2y/\nR9KbKCWvhw+SZlACwOttW9JZto9Kup/KTEHSVuAjtvslXUK5Q/WKOM25wNsoJQ42SzqPUjP/Vtur\nJU2h1NRPkuMmg0JSZ/oHA0KwWNINlO/9qygbljQHhX/ZfiDaO4BLRzj3ukqf3mjPB1YC2N4laW+L\ncU9SSkN/R9J9wIbmDlH3aB6wVkMVYau/1R9HKqxP0h8oweHXwBckvRZYZ/vgCH4nyf8k00dJnfnH\nYEPSbOBGYIHtOcCDlJowzTxTaT/PyP84/WcUfV6E7WcpNWruBa4F7mvRTcCfbc+tPKqls5svBNr2\nD4Drwq8HJV02Wp+SpEoGhaRbOBP4G6WSZA9w5TH6nwi/At4PJcdPmYkMIypinml7A/AZysZBhG/T\nAGz/FXhC0nUx5pRIRw3yPhXOp6SSDkiaZfug7a9TZh9z2qAv6QIyfZR0C49SUkX7gd9T/oCPNd8E\nvi9pX7zXPsouV1WmA+si738KZU9iKFVw75T0OcoMYhFwe6yomgysolTShFIffzswFfio7WckfUDS\nYkoV3T8Ct7RBX9IF5JLUJBkj4gL2JNv/jnTVz4DZLlsgjtV75NLVpK3kTCFJxo6pwJYIDgI+NpYB\nIUnGg5wpJEmSJA3yQnOSJEnSIINCkiRJ0iCDQpIkSdIgg0KSJEnSIINCkiRJ0uC/fjevveGsopIA\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa7ecd2dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(True, 0.01, tf.nn.sigmoid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using a sigmoid activation function works better than the ReLU in the previous example, but without batch normalization it would take a tremendously long time to train the network, if it ever trained at all. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a ReLU activation function, a learning rate of 1, and bad starting weights.**<a id=\"successful_example_lr_1\"></a>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:38<00:00, 1313.14it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.11259999126195908\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:36<00:00, 520.39it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9243997931480408\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.11349999904632568\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9208000302314758\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f2e91582828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(True, 1, tf.nn.relu)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The higher learning rate used here allows the network with batch normalization to surpass 90% in about 30 thousand batches. The network without it never gets anywhere."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a sigmoid activation function, a learning rate of 1, and bad starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:35<00:00, 1409.45it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.896999716758728\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:33<00:00, 534.39it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9569997787475586\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.8957001566886902\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9505001306533813\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa7ed1f128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(True, 1, tf.nn.sigmoid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using sigmoid works better than ReLUs for this higher learning rate. However, you can see that without batch normalization, the network takes a long time tro train, bounces around a lot, and spends a long time stuck at 90%. The network with batch normalization trains much more quickly, seems to be more stable, and achieves a higher accuracy."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a ReLU activation function, a learning rate of 2, and bad starting weights.**<a id=\"successful_example_lr_2\"></a>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:35<00:00, 1392.83it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.0957999974489212\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:33<00:00, 536.51it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9127997159957886\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.09800000488758087\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9054000973701477\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f91afbf2518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(True, 2, tf.nn.relu)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We've already seen that ReLUs do not do as well as sigmoids with higher learning rates, and here we are using an extremely high rate. As expected, without batch normalization the network doesn't learn at all. But with batch normalization, it eventually achieves 90% accuracy. Notice, though, how its accuracy bounces around wildly during training - that's because the learning rate is really much too high, so the fact that this worked at all is a bit of luck."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**The following creates two networks using a sigmoid activation function, a learning rate of 2, and bad starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:35<00:00, 1401.19it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.9093997478485107\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:33<00:00, 532.22it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9613996744155884\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.9066000580787659\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9583001136779785\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nTND/BxKdwD+d+NuJAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa7131c5c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(True, 2, tf.nn.sigmoid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case, the network with batch normalization trained faster and reached a higher accuracy. Meanwhile, the high learning rate makes the network without normalization bounce around erratically and have trouble getting past 90%."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Full Disclosure: Batch Normalization Doesn't Fix Everything\n",
    "\n",
    "Batch normalization isn't magic and it doesn't work every time. Weights are still randomly initialized and batches are chosen at random during training, so you never know exactly how training will go. Even for these tests, where we use the same initial weights for both networks, we still get _different_ weights each time we run.\n",
    "\n",
    "This section includes two examples that show runs when batch normalization did not help at all.\n",
    "\n",
    "**The following creates two networks using a ReLU activation function, a learning rate of 1, and bad starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:36<00:00, 1386.17it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.11259999126195908\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:35<00:00, 523.58it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.09879998862743378\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.11350000649690628\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.10099999606609344\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa7c35a2e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(True, 1, tf.nn.relu)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When we used these same parameters [earlier](#successful_example_lr_1), we saw the network with batch normalization reach 92% validation accuracy. This time we used different starting weights, initialized using the same standard deviation as before, and the network doesn't learn at all. (Remember, an accuracy around 10% is what the network gets if it just guesses the same value all the time.)\n",
    "\n",
    "**The following creates two networks using a ReLU activation function, a learning rate of 2, and bad starting weights.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [00:35<00:00, 1398.39it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Without Batch Norm: After training, final accuracy on validation set = 0.0957999974489212\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50000/50000 [01:34<00:00, 529.50it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.09859999269247055\n",
      "---------------------------------------------------------------------------\n",
      "Without Batch Norm: Accuracy on full test set = 0.09799998998641968\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.10100000351667404\n"
     ]
    },
    {
     "data": {
      "image/png": "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\neGtfrKUQnm/fBH8e9Ly6umtSdcET+IVqKSQ2dNcr2GCzKUebNm2Ii4tjw4YNzJ07l7POOou+ffsy\nb948Fi5cSM+ePUlISAiUT0hI4He/+x3XXnstmZmZXHvttQCsXLmSTz75hPnz5/P444+Tn5/PokWL\nePXVV/nmm2/4+uuv+ec//8l3331XZl2GDh1KWloaL7/8MpmZmSETwgMPPECvXr1o164dw4YNo2VL\n9+VozJgxLFiwgKVLl5Kbm8uMGTMC+5s4cSKZmZnExsZy7bXXMm7cOBYvXsxnn30WeI3MzEwmT57M\nkiVLmDx5Mhs3bjzstQHOOussEhISmD17donlL730EiLCkiVLePvtt7n55psDievbb79lypQpfPHF\nFwAsXryY8ePHs2LFCt58801Wr17N/Pnzuemmm3jxxRfD/dOFzVoKFfEXwPwJ0LE/tD6lumtTdSVa\nCiGSArh7Nn830cUcax+N2qD0N/pjcc5+v379mDt3LnPnzuXee+9l8+bNzJ07l5SUFM4+++yw9vGz\nn/2MxMREEhMTadmyJdu3b2fOnDlceeWVgW/zV111FV999RWXX355lev6zDPPMHToUHw+HwMHDgx0\nb82ePZunn36aAwcOsHv3brp3785ll11WYttVq1bRunVrzjjjDAAaNWoUWDdw4EBSUlIA6NatGz/9\n9BPt27cnlEceeYQnnniCp556KrBszpw53HHHHQB07dqVDh06sHq1m/7twgsvpGnT4uuIzjjjDFq3\ndjMQdO7cmYsuugiA7t27M2/evCq/N2WxlkJFVs6AfRuh7+jqrsmRSQ4jKbTvC/k5sH3psamTqZWK\nxhWWLFlCjx49OPPMM5k3b17ggBuOxMTiadpjY2PL7T+Pi4ujsLAw8Lwq5+AnJyeTnp7OnDlzOHjw\nIL/+9a+ZMmUKS5Ys4dZbb630PitT//PPP5/c3Fy+/jq8VnhRUgz1WjExMYHnMTExERl3sKRQkW/G\nuwHmkwZXXLYmq98cEDfdRf0ypv5u790DaaNdxGbK1q9fP2bMmEHTpk2JjY2ladOm7N27l3nz5oVM\nCg0bNmT//v0V7rd///588MEHHDhwgJycHN5//3369+9PamoqO3bsICsri0OHDjFjxowS+/b5fBXu\nu6CggG+++YbOnTsHEkDz5s3x+XyBAfHSdT3ppJPYunUrCxa4ky/2799f5YPwI488UmLcoX///kyc\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ffa6afd2e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_and_test(True, 2, tf.nn.relu)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When we trained with these parameters and batch normalization [earlier](#successful_example_lr_2), we reached 90% validation accuracy. However, this time the network _almost_ starts to make some progress in the beginning, but it quickly breaks down and stops learning. \n",
    "\n",
    "**Note:** Both of the above examples use *extremely* bad starting weights, along with learning rates that are too high. While we've shown batch normalization _can_ overcome bad values, we don't mean to encourage actually using them. The examples in this notebook are meant to show that batch normalization can help your networks train better. But these last two examples should remind you that you still want to try to use good network design choices and reasonable starting weights. It should also remind you that the results of each attempt to train a network are a bit random, even when using otherwise identical architectures."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Batch Normalization: A Detailed Look<a id='implementation_2'></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The layer created by `tf.layers.batch_normalization` handles all the details of implementing batch normalization. Many students will be fine just using that and won't care about what's happening at the lower levels. However, some students may want to explore the details, so here is a short explanation of what's really happening, starting with the equations you're likely to come across if you ever read about batch normalization. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In order to normalize the values, we first need to find the average value for the batch. If you look at the code, you can see that this is not the average value of the batch _inputs_, but the average value coming _out_ of any particular layer before we pass it through its non-linear activation function and then feed it as an input to the _next_ layer.\n",
    "\n",
    "We represent the average as $\\mu_B$, which is simply the sum of all of the values $x_i$ divided by the number of values, $m$ \n",
    "\n",
    "$$\n",
    "\\mu_B \\leftarrow \\frac{1}{m}\\sum_{i=1}^m x_i\n",
    "$$\n",
    "\n",
    "We then need to calculate the variance, or mean squared deviation, represented as $\\sigma_{B}^{2}$. If you aren't familiar with statistics, that simply means for each value $x_i$, we subtract the average value (calculated earlier as $\\mu_B$), which gives us what's called the \"deviation\" for that value. We square the result to get the squared deviation. Sum up the results of doing that for each of the values, then divide by the number of values, again $m$, to get the average, or mean, squared deviation.\n",
    "\n",
    "$$\n",
    "\\sigma_{B}^{2} \\leftarrow \\frac{1}{m}\\sum_{i=1}^m (x_i - \\mu_B)^2\n",
    "$$\n",
    "\n",
    "Once we have the mean and variance, we can use them to normalize the values with the following equation. For each value, it subtracts the mean and divides by the (almost) standard deviation. (You've probably heard of standard deviation many times, but if you have not studied statistics you might not know that the standard deviation is actually the square root of the mean squared deviation.)\n",
    "\n",
    "$$\n",
    "\\hat{x_i} \\leftarrow \\frac{x_i - \\mu_B}{\\sqrt{\\sigma_{B}^{2} + \\epsilon}}\n",
    "$$\n",
    "\n",
    "Above, we said \"(almost) standard deviation\". That's because the real standard deviation for the batch is calculated by $\\sqrt{\\sigma_{B}^{2}}$, but the above formula adds the term epsilon, $\\epsilon$, before taking the square root. The epsilon can be any small, positive constant - in our code we use the value `0.001`. It is there partially to make sure we don't try to divide by zero, but it also acts to increase the variance slightly for each batch. \n",
    "\n",
    "Why increase the variance? Statistically, this makes sense because even though we are normalizing one batch at a time, we are also trying to estimate the population distribution – the total training set, which itself an estimate of the larger population of inputs your network wants to handle. The variance of a population is higher than the variance for any sample taken from that population, so increasing the variance a little bit for each batch helps take that into account. \n",
    "\n",
    "At this point, we have a normalized value, represented as $\\hat{x_i}$. But rather than use it directly, we multiply it by a gamma value, $\\gamma$, and then add a beta value, $\\beta$. Both $\\gamma$ and $\\beta$ are learnable parameters of the network and serve to scale and shift the normalized value, respectively. Because they are learnable just like weights, they give your network some extra knobs to tweak during training to help it learn the function it is trying to approximate.  \n",
    "\n",
    "$$\n",
    "y_i \\leftarrow \\gamma \\hat{x_i} + \\beta\n",
    "$$\n",
    "\n",
    "We now have the final batch-normalized output of our layer, which we would then pass to a non-linear activation function like sigmoid, tanh, ReLU, Leaky ReLU, etc. In the original batch normalization paper (linked in the beginning of this notebook), they mention that there might be cases when you'd want to perform the batch normalization _after_ the non-linearity instead of before, but it is difficult to find any uses like that in practice.\n",
    "\n",
    "In `NeuralNet`'s implementation of `fully_connected`, all of this math is hidden inside the following line, where `linear_output` serves as the $x_i$ from the equations:\n",
    "```python\n",
    "batch_normalized_output = tf.layers.batch_normalization(linear_output, training=self.is_training)\n",
    "```\n",
    "The next section shows you how to implement the math directly. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Batch normalization without the `tf.layers` package\n",
    "\n",
    "Our implementation of batch normalization in `NeuralNet` uses the high-level abstraction [tf.layers.batch_normalization](https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization), found in TensorFlow's [`tf.layers`](https://www.tensorflow.org/api_docs/python/tf/layers) package.\n",
    "\n",
    "However, if you would like to implement batch normalization at a lower level, the following code shows you how.\n",
    "It uses [tf.nn.batch_normalization](https://www.tensorflow.org/api_docs/python/tf/nn/batch_normalization) from TensorFlow's [neural net (nn)](https://www.tensorflow.org/api_docs/python/tf/nn) package.\n",
    "\n",
    "**1)** You can replace the `fully_connected` function in the `NeuralNet` class with the below code and everything in `NeuralNet` will still work like it did before."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def fully_connected(self, layer_in, initial_weights, activation_fn=None):\n",
    "    \"\"\"\n",
    "    Creates a standard, fully connected layer. Its number of inputs and outputs will be\n",
    "    defined by the shape of `initial_weights`, and its starting weight values will be\n",
    "    taken directly from that same parameter. If `self.use_batch_norm` is True, this\n",
    "    layer will include batch normalization, otherwise it will not. \n",
    "        \n",
    "    :param layer_in: Tensor\n",
    "        The Tensor that feeds into this layer. It's either the input to the network or the output\n",
    "        of a previous layer.\n",
    "    :param initial_weights: NumPy array or Tensor\n",
    "        Initial values for this layer's weights. The shape defines the number of nodes in the layer.\n",
    "        e.g. Passing in 3 matrix of shape (784, 256) would create a layer with 784 inputs and 256 \n",
    "        outputs. \n",
    "    :param activation_fn: Callable or None (default None)\n",
    "        The non-linearity used for the output of the layer. If None, this layer will not include \n",
    "        batch normalization, regardless of the value of `self.use_batch_norm`. \n",
    "        e.g. Pass tf.nn.relu to use ReLU activations on your hidden layers.\n",
    "    \"\"\"\n",
    "    if self.use_batch_norm and activation_fn:\n",
    "        # Batch normalization uses weights as usual, but does NOT add a bias term. This is because \n",
    "        # its calculations include gamma and beta variables that make the bias term unnecessary.\n",
    "        weights = tf.Variable(initial_weights)\n",
    "        linear_output = tf.matmul(layer_in, weights)\n",
    "\n",
    "        num_out_nodes = initial_weights.shape[-1]\n",
    "\n",
    "        # Batch normalization adds additional trainable variables: \n",
    "        # gamma (for scaling) and beta (for shifting).\n",
    "        gamma = tf.Variable(tf.ones([num_out_nodes]))\n",
    "        beta = tf.Variable(tf.zeros([num_out_nodes]))\n",
    "\n",
    "        # These variables will store the mean and variance for this layer over the entire training set,\n",
    "        # which we assume represents the general population distribution.\n",
    "        # By setting `trainable=False`, we tell TensorFlow not to modify these variables during\n",
    "        # back propagation. Instead, we will assign values to these variables ourselves. \n",
    "        pop_mean = tf.Variable(tf.zeros([num_out_nodes]), trainable=False)\n",
    "        pop_variance = tf.Variable(tf.ones([num_out_nodes]), trainable=False)\n",
    "\n",
    "        # Batch normalization requires a small constant epsilon, used to ensure we don't divide by zero.\n",
    "        # This is the default value TensorFlow uses.\n",
    "        epsilon = 1e-3\n",
    "\n",
    "        def batch_norm_training():\n",
    "            # Calculate the mean and variance for the data coming out of this layer's linear-combination step.\n",
    "            # The [0] defines an array of axes to calculate over.\n",
    "            batch_mean, batch_variance = tf.nn.moments(linear_output, [0])\n",
    "\n",
    "            # Calculate a moving average of the training data's mean and variance while training.\n",
    "            # These will be used during inference.\n",
    "            # Decay should be some number less than 1. tf.layers.batch_normalization uses the parameter\n",
    "            # \"momentum\" to accomplish this and defaults it to 0.99\n",
    "            decay = 0.99\n",
    "            train_mean = tf.assign(pop_mean, pop_mean * decay + batch_mean * (1 - decay))\n",
    "            train_variance = tf.assign(pop_variance, pop_variance * decay + batch_variance * (1 - decay))\n",
    "\n",
    "            # The 'tf.control_dependencies' context tells TensorFlow it must calculate 'train_mean' \n",
    "            # and 'train_variance' before it calculates the 'tf.nn.batch_normalization' layer.\n",
    "            # This is necessary because the those two operations are not actually in the graph\n",
    "            # connecting the linear_output and batch_normalization layers, \n",
    "            # so TensorFlow would otherwise just skip them.\n",
    "            with tf.control_dependencies([train_mean, train_variance]):\n",
    "                return tf.nn.batch_normalization(linear_output, batch_mean, batch_variance, beta, gamma, epsilon)\n",
    " \n",
    "        def batch_norm_inference():\n",
    "            # During inference, use the our estimated population mean and variance to normalize the layer\n",
    "            return tf.nn.batch_normalization(linear_output, pop_mean, pop_variance, beta, gamma, epsilon)\n",
    "\n",
    "        # Use `tf.cond` as a sort of if-check. When self.is_training is True, TensorFlow will execute \n",
    "        # the operation returned from `batch_norm_training`; otherwise it will execute the graph\n",
    "        # operation returned from `batch_norm_inference`.\n",
    "        batch_normalized_output = tf.cond(self.is_training, batch_norm_training, batch_norm_inference)\n",
    "            \n",
    "        # Pass the batch-normalized layer output through the activation function.\n",
    "        # The literature states there may be cases where you want to perform the batch normalization *after*\n",
    "        # the activation function, but it is difficult to find any uses of that in practice.\n",
    "        return activation_fn(batch_normalized_output)\n",
    "    else:\n",
    "        # When not using batch normalization, create a standard layer that multiplies\n",
    "        # the inputs and weights, adds a bias, and optionally passes the result \n",
    "        # through an activation function.  \n",
    "        weights = tf.Variable(initial_weights)\n",
    "        biases = tf.Variable(tf.zeros([initial_weights.shape[-1]]))\n",
    "        linear_output = tf.add(tf.matmul(layer_in, weights), biases)\n",
    "        return linear_output if not activation_fn else activation_fn(linear_output)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This version of `fully_connected` is much longer than the original, but once again has extensive comments to help you understand it. Here are some important points:\n",
    "\n",
    "1. It explicitly creates variables to store gamma, beta, and the population mean and variance. These were all handled for us in the previous version of the function.\n",
    "2. It initializes gamma to one and beta to zero, so they start out having no effect in this calculation: $y_i \\leftarrow \\gamma \\hat{x_i} + \\beta$. However, during training the network learns the best values for these variables using back propagation, just like networks normally do with weights.\n",
    "3. Unlike gamma and beta, the variables for population mean and variance are marked as untrainable. That tells TensorFlow not to modify them during back propagation. Instead, the lines that call `tf.assign` are used to update these variables directly.\n",
    "4. TensorFlow won't automatically run the `tf.assign` operations during training because it only evaluates operations that are required based on the connections it finds in the graph. To get around that, we add this line: `with tf.control_dependencies([train_mean, train_variance]):` before we run the normalization operation. This tells TensorFlow it needs to run those operations before running anything inside the `with` block. \n",
    "5. The actual normalization math is still mostly hidden from us, this time using [`tf.nn.batch_normalization`](https://www.tensorflow.org/api_docs/python/tf/nn/batch_normalization).\n",
    "5. `tf.nn.batch_normalization` does not have a `training` parameter like `tf.layers.batch_normalization` did. However, we still need to handle training and inference differently, so we run different code in each case using the [`tf.cond`](https://www.tensorflow.org/api_docs/python/tf/cond) operation.\n",
    "6. We use the [`tf.nn.moments`](https://www.tensorflow.org/api_docs/python/tf/nn/moments) function to calculate the batch mean and variance."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**2)** The current version of the `train` function in `NeuralNet` will work fine with this new version of `fully_connected`. However, it uses these lines to ensure population statistics are updated when using batch normalization: \n",
    "```python\n",
    "if self.use_batch_norm:\n",
    "    with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):\n",
    "        train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)\n",
    "else:\n",
    "    train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)\n",
    "```\n",
    "Our new version of `fully_connected` handles updating the population statistics directly. That means you can also simplify your code by replacing the above `if`/`else` condition with just this line:\n",
    "```python\n",
    "train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**3)** And just in case you want to implement every detail from scratch, you can replace this line in `batch_norm_training`:\n",
    "\n",
    "```python\n",
    "return tf.nn.batch_normalization(linear_output, batch_mean, batch_variance, beta, gamma, epsilon)\n",
    "```\n",
    "with these lines:\n",
    "```python\n",
    "normalized_linear_output = (linear_output - batch_mean) / tf.sqrt(batch_variance + epsilon)\n",
    "return gamma * normalized_linear_output + beta\n",
    "```\n",
    "And replace this line in `batch_norm_inference`:\n",
    "```python\n",
    "return tf.nn.batch_normalization(linear_output, pop_mean, pop_variance, beta, gamma, epsilon)\n",
    "```\n",
    "with these lines:\n",
    "```python\n",
    "normalized_linear_output = (linear_output - pop_mean) / tf.sqrt(pop_variance + epsilon)\n",
    "return gamma * normalized_linear_output + beta\n",
    "```\n",
    "\n",
    "As you can see in each of the above substitutions, the two lines of replacement code simply implement the following two equations directly. The first line calculates the following equation, with `linear_output` representing $x_i$ and `normalized_linear_output` representing $\\hat{x_i}$: \n",
    "\n",
    "$$\n",
    "\\hat{x_i} \\leftarrow \\frac{x_i - \\mu_B}{\\sqrt{\\sigma_{B}^{2} + \\epsilon}}\n",
    "$$\n",
    "\n",
    "And the second line is a direct translation of the following equation:\n",
    "\n",
    "$$\n",
    "y_i \\leftarrow \\gamma \\hat{x_i} + \\beta\n",
    "$$\n",
    "\n",
    "We still use the `tf.nn.moments` operation to implement the other two equations from earlier – the ones that calculate the batch mean and variance used in the normalization step. If you really wanted to do everything from scratch, you could replace that line, too, but we'll leave that to you.  \n",
    "\n",
    "## Why the difference between training and inference?\n",
    "\n",
    "In the original function that uses `tf.layers.batch_normalization`, we tell the layer whether or not the network is training by passing a value for its `training` parameter, like so:\n",
    "```python\n",
    "batch_normalized_output = tf.layers.batch_normalization(linear_output, training=self.is_training)\n",
    "```\n",
    "And that forces us to provide a value for `self.is_training` in our `feed_dict`, like we do in this example from `NeuralNet`'s `train` function:\n",
    "```python\n",
    "session.run(train_step, feed_dict={self.input_layer: batch_xs, \n",
    "                                   labels: batch_ys, \n",
    "                                   self.is_training: True})\n",
    "```\n",
    "If you looked at the [low level implementation](#low_level_code), you probably noticed that, just like with `tf.layers.batch_normalization`, we need to do slightly different things during training and inference. But why is that?\n",
    "\n",
    "First, let's look at what happens when we don't. The following function is similar to `train_and_test` from earlier, but this time we are only testing one network and instead of plotting its accuracy, we perform 200 predictions on test inputs, 1 input at at time. We can use the `test_training_accuracy` parameter to test the network in training or inference modes (the equivalent of passing `True` or `False` to the `feed_dict` for `is_training`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def batch_norm_test(test_training_accuracy):\n",
    "    \"\"\"\n",
    "    :param test_training_accuracy: bool\n",
    "        If True, perform inference with batch normalization using batch mean and variance;\n",
    "        if False, perform inference with batch normalization using estimated population mean and variance.\n",
    "    \"\"\"\n",
    "\n",
    "    weights = [np.random.normal(size=(784,100), scale=0.05).astype(np.float32),\n",
    "               np.random.normal(size=(100,100), scale=0.05).astype(np.float32),\n",
    "               np.random.normal(size=(100,100), scale=0.05).astype(np.float32),\n",
    "               np.random.normal(size=(100,10), scale=0.05).astype(np.float32)\n",
    "              ]\n",
    "\n",
    "    tf.reset_default_graph()\n",
    "\n",
    "    # Train the model\n",
    "    bn = NeuralNet(weights, tf.nn.relu, True)\n",
    " \n",
    "    # First train the network\n",
    "    with tf.Session() as sess:\n",
    "        tf.global_variables_initializer().run()\n",
    "\n",
    "        bn.train(sess, 0.01, 2000, 2000)\n",
    "\n",
    "        bn.test(sess, test_training_accuracy=test_training_accuracy, include_individual_predictions=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the following cell, we pass `True` for `test_training_accuracy`, which performs the same batch normalization that we normally perform **during training**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 2000/2000 [00:03<00:00, 514.57it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9527996778488159\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.9503000974655151\n",
      "200 Predictions: [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8]\n",
      "Accuracy on 200 samples: 0.05\n"
     ]
    }
   ],
   "source": [
    "batch_norm_test(True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, the network guessed the same value every time! But why? Because during training, a network with batch normalization adjusts the values at each layer based on the mean and variance **of that batch**. The \"batches\" we are using for these predictions have a single input each time, so their values _are_ the means, and their variances will always be 0. That means the network will normalize the values at any layer to zero. (Review the equations from before to see why a value that is equal to the mean would always normalize to zero.) So we end up with the same result for every input we give the network, because its the value the network produces when it applies its learned weights to zeros at every layer. \n",
    "\n",
    "**Note:** If you re-run that cell, you might get a different value from what we showed. That's because the specific weights the network learns will be different every time. But whatever value it is, it should be the same for all 200 predictions.\n",
    "\n",
    "To overcome this problem, the network does not just normalize the batch at each layer. It also maintains an estimate of the mean and variance for the entire population. So when we perform inference, instead of letting it \"normalize\" all the values using their own means and variance, it uses the estimates of the population mean and variance that it calculated while training. \n",
    "\n",
    "So in the following example, we pass `False` for `test_training_accuracy`, which tells the network that we it want to perform inference with the population statistics it calculates during training."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 2000/2000 [00:03<00:00, 511.58it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "With Batch Norm: After training, final accuracy on validation set = 0.9577997326850891\n",
      "---------------------------------------------------------------------------\n",
      "With Batch Norm: Accuracy on full test set = 0.953700065612793\n",
      "200 Predictions: [7, 2, 1, 0, 4, 1, 4, 9, 6, 9, 0, 8, 9, 0, 1, 5, 9, 7, 3, 4, 9, 6, 6, 5, 4, 0, 7, 4, 0, 1, 3, 1, 3, 6, 7, 2, 7, 1, 2, 1, 1, 7, 4, 2, 3, 5, 1, 2, 4, 4, 6, 3, 5, 5, 6, 0, 4, 1, 9, 5, 7, 8, 9, 3, 7, 4, 6, 4, 3, 0, 7, 0, 2, 9, 1, 7, 3, 2, 9, 7, 7, 6, 2, 7, 8, 4, 7, 3, 6, 1, 3, 6, 4, 3, 1, 4, 1, 7, 6, 9, 6, 0, 5, 4, 9, 9, 2, 1, 9, 4, 8, 7, 3, 9, 7, 4, 4, 4, 9, 2, 5, 4, 7, 6, 7, 9, 0, 5, 8, 5, 6, 6, 5, 7, 8, 1, 0, 1, 6, 4, 6, 7, 3, 1, 7, 1, 8, 2, 0, 4, 9, 8, 5, 5, 1, 5, 6, 0, 3, 4, 4, 6, 5, 4, 6, 5, 4, 5, 1, 4, 4, 7, 2, 3, 2, 7, 1, 8, 1, 8, 1, 8, 5, 0, 8, 9, 2, 5, 0, 1, 1, 1, 0, 9, 0, 3, 1, 6, 4, 2]\n",
      "Accuracy on 200 samples: 0.97\n"
     ]
    }
   ],
   "source": [
    "batch_norm_test(False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, now that we're using the estimated population mean and variance, we get a 97% accuracy. That means it guessed correctly on 194 of the 200 samples – not too bad for something that trained in under 4 seconds. :)\n",
    "\n",
    "# Considerations for other network types\n",
    "\n",
    "This notebook demonstrates batch normalization in a standard neural network with fully connected layers. You can also use batch normalization in other types of networks, but there are some special considerations.\n",
    "\n",
    "### ConvNets\n",
    "\n",
    "Convolution layers consist of multiple feature maps. (Remember, the depth of a convolutional layer refers to its number of feature maps.) And the weights for each feature map are shared across all the inputs that feed into the layer. Because of these differences, batch normalizaing convolutional layers requires batch/population mean and variance per feature map rather than per node in the layer.\n",
    "\n",
    "When using `tf.layers.batch_normalization`, be sure to pay attention to the order of your convolutionlal dimensions.\n",
    "Specifically, you may want to set a different value for the `axis` parameter if your layers have their channels first instead of last. \n",
    "\n",
    "In our low-level implementations, we used the following line to calculate the batch mean and variance:\n",
    "```python\n",
    "batch_mean, batch_variance = tf.nn.moments(linear_output, [0])\n",
    "```\n",
    "If we were dealing with a convolutional layer, we would calculate the mean and variance with a line like this instead:\n",
    "```python\n",
    "batch_mean, batch_variance = tf.nn.moments(conv_layer, [0,1,2], keep_dims=False)\n",
    "```\n",
    "The second parameter, `[0,1,2]`, tells TensorFlow to calculate the batch mean and variance over each feature map. (The three axes are the batch, height, and width.) And setting `keep_dims` to `False` tells `tf.nn.moments` not to return values with the same size as the inputs. Specifically, it ensures we get one mean/variance pair per feature map.\n",
    "\n",
    "### RNNs\n",
    "\n",
    "Batch normalization can work with recurrent neural networks, too, as shown in the 2016 paper [Recurrent Batch Normalization](https://arxiv.org/abs/1603.09025). It's a bit more work to implement, but basically involves calculating the means and variances per time step instead of per layer. You can find an example where someone extended `tf.nn.rnn_cell.RNNCell` to include batch normalization in [this GitHub repo](https://gist.github.com/spitis/27ab7d2a30bbaf5ef431b4a02194ac60)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
